Python中的文件处理
Python文件处理
在任何Web应用程序中,文件处理都非常重要并且容易出错。如果文件的读取或写入未正常关闭,则很容易发生文件资源泄漏。
在python中,文件处理的概念非常简单且简短。文件操作按以下顺序进行:
如果是预定义或可选模式,则打开文件
读或写
关闭档案
开启档案
open()python中的函数,以读取,写入或追加模式打开文件。该open()会返回一个文件对象。
语法:
open(filename, mode)
模式有很多种,
读取文件
#导入模块
import os
#读取文件内容的功能
def read_file(file_loc):
file_obj = open(file_loc)
print(file_obj.read())
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
file_name = os.path.join(dir_name, 'samples/sample_file.txt')
read_file(file_name)输出结果
this is a sample file
在上面的示例中,如果未将模式作为参数传递,则使用“读取”模式打开文件。
读取文件的另一种方法是仅调用所需数量的字符。
#导入模块
import os
#读取文件内容的功能
def read_file(file_loc):
file_obj = open(file_loc)
print(file_obj.read(10))
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
file_name = os.path.join(dir_name, 'samples/sample_file.txt')
read_file(file_name)输出结果
this is a
要将文件的行作为列表读取,请使用函数readlines(),返回整个文件中的行列表。达到EOF时,读取方法将返回空值。
#导入模块
import os
#读取文件内容的功能
def read_file(file_loc):
file_obj = open(file_loc)
print(file_obj.readlines())
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
file_name = os.path.join(dir_name, 'samples/sample_file.txt')
read_file(file_name)输出结果
['this is a sample file']
写入文件
#导入模块
import os
#读取文件内容的功能
def read_file(file_loc):
file_obj = open(file_loc)
print(file_obj.read())
#print(file_obj.read(10))
#写入文件的功能
def write_file(file_loc):
file_obj = open(file_loc, "w")
file_obj.write("MY sample file for include_help\n")
file_obj.write("I can write long long lines")
file_obj.close()
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
write_file_name = os.path.join(dir_name, 'samples/sample_file_1.txt')
write_file(write_file_name)
read_file(write_file_name)在上面的示例中,我们看到了方法close(),非常重要的一点是,要写入的文件对象始终处于关闭状态,以终止使用中的资源并释放系统。
追加模式
#导入模块
import os
#读取文件内容的功能
def read_file(file_loc):
file_obj = open(file_loc)
print(file_obj.read())
#写入文件的功能
def write_file(file_loc):
file_obj = open(file_loc, "w")
file_obj.write("MY sample file for include_help\n")
file_obj.write("I can write long long lines")
file_obj.close()
#附加文件
def append_file(file_loc):
file_obj = open(file_loc, "a")
file_obj.write("\n appending the information")
file_obj.close()
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
write_file_name = os.path.join(dir_name, 'samples/sample_file_1.txt')
write_file(write_file_name)
append_file(write_file_name)
read_file(write_file_name)输出结果
MY sample file for include_help I can write long long lines appending the information
附加模式用于在文件中附加其他信息的情况,而不是在每次调用时都创建文件。
with()方法
with()method是一种有用的方法,它会自动关闭以任何方式打开的所有文件,并完成自动清理。
#导入模块
import os
#读取操作功能
def with_read_operation(file_loc):
with open(file_loc) as file_obj:
data = file_obj.read()
print(data)
#写入操作功能
def with_write_operation(file_loc):
with open(file_loc, "w") as file_obj:
file_obj.write("writing using with()")
#主要功能/代码
if __name__ == '__main__':
dir_name = os.path.dirname(__file__)
write_file_name = os.path.join(dir_name, 'samples/sample_file_2.txt')
with_write_operation(write_file_name)
with_read_operation(write_file_name)输出结果
writing using with()
其他文件操作是