Python文本文件操作
单个文本文件读取
1.读取文本文件的旧型语法
示例:
读取名为file_to_read.txt的文本文件内容。
文本文件内容:
I
love
Rock
n
Roll.
input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
#文件路径以下面这种形式表示也行
#input_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_read.txt"
filereader = open(input_file, 'r') #'r' 表示打开文件的方式是只读
#按行输出文本文件内容
for row in filereader:
print(row.strip()) #strip()用于取出每行最后的换行符
filereader.close() #关闭文件,必须执行这不操作
输出结果:
I
love
Rock
n
Roll.
2.读取文本文件的新型语法
示例:
与上面示例读取相同的文本文件
input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
#文件路径以下面这种形式表示也行
#input_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_read.txt"
with open(input_file, 'r', newline = '') as filereader'
for row in filereader:
print(row.strip()) #strip()用于取出每行最后的换行符
运行结果:与上面相同。
新旧两种语法型区别:
- 从Python 2.5开始,支持新型语法;
- 新型语法采用with语句来创建文件对象;
- with语句结束时会自动关闭文件,不必使用filereader.close()。
3.读取整个文件
示例:
input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
with open(input_file, 'r', newline = '') as filereader:
content = filereader.read() #用read()读取整个文件
print(content)
运行结果:与上面相同。
4.创建一个包含文件各行内容的列表
示例:
input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
with open(input_file, 'r', newline = '') as filereader:
lines = filereader.readlines() #用readlines()创建列表
print(lines)
运行结果:
['I\r\n', 'love\r\n', 'Rock\r\n', 'n\r\n', 'Roll.']
使用glob读取多个文本文件
在很多商业应用中,需要对多个文件进行相同或相似的处理。
读取多的文件需要在脚本文上方添加 import glob 和 import os 两个语句。
当导入了os模块之后,就可以使用它提供的若干种路径名函数了。例如:os.path.join函数可以巧妙地将一个或多个路径成分连接在一起。glob模块可以找出与特定模式相匹配的所有路径名。os模块和glob模块组合在一起使用,可以找出符合特定模式的某文件夹下面的所有文件。
示例:
import os
import glob
#inputPath是文件夹路径,该文件夹中存放file_to_read.txt与file_to_read2.txt
inputPath = "E:\\CVSwork\\PythonDataAnalysisFoundation"
for input_file in glob.glob(os.path.join(inputPath, '*.txt')):
print("input_file: ", input_file)
with open(input_file, 'r', newline = '') as filereader:
for row in filereader:
print(row.strip())
os.path.join() 函数将括号内的参数以文件路径的形式连接在一起,即 “E:\CVSwork\PythonDataAnalysisFoundation\filename.txt”; glob.glob() 函数按照特定模式进行路径名匹配,即在路径 “E:\CVSwork\PythonDataAnalysisFoundation” 下寻找txt文件。
运行结果:
input_file: E:\CVSwork\PythonDataAnalysisFoundation\file_to_read.txt
I
love
Rock
n
Roll.
input_file: E:\CVSwork\PythonDataAnalysisFoundation\file_to_read2.txt
I
like
jazz,
too.
写入文本文件
Python提供了两种简单的方法来将输出写入文本文件和分隔符文件。 write 方法可以单个字符串写入一个文件, writelines 方法可以将一系列字符串写入一个文件。
如果写入文件存在,则文件中原来的内容将会被覆盖;如果输入文件不存在,则会自动新建一个文件,然后再写入内容。
示例:
my_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
max_index = len(my_letters)
#write
output_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_write.txt" #文件路径
filewriter = open(output_file, 'w') #创建文件对象,'w'表示‘可写’
for index in range(max_index):
if index < max_index - 1:
filewriter.write(my_letters[index] + "\t") #使用write写入文件
else:
filewriter.write(my_letters[index] + "\n")
my_words = ["I ", "Love ", "Rock 'N' Roll."]
filewriter.writelines(my_words) #使用writelines写入文件
filewriter.close() #关闭文件
运行结果:
file_to_write.txt文件中的内容形式如下。
a b c d e f g h
I Love Rock 'N' Roll.
文本文件内容追加
将新的内容追加到一个已经存在的输出文件末尾(文件不存在则会新建一个)。与写入文件不同,追加不会覆盖文件中原来的内容。
示例:
output_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_append.txt"
filewriter = open(output_file, 'a')
filewriter.write("I'm Ziggy. " + "\n")
my_words = ["I ", "Love ", "Rock 'N' Roll."]
filewriter.writelines(my_words)
filewriter.close()
运行结果:
file_to_write.txt文件中的内容形式如下。
I'm Ziggy.
I Love Rock 'N' Roll.
再运行一次,file_to_write.txt文件中的内容形式如下。
I'm Ziggy.
I Love Rock 'N' Roll.
I'm Ziggy.
I Love Rock 'N' Roll.
在原文件内容后面又追加了一遍相同的内容。
关于参数 newline = ‘’
文件打开方式
r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
参考文献:
《Python编程从入门到实践》
《Python数据分析基础》

被折叠的 条评论
为什么被折叠?



