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()
其他文件操作是