file_path = 'e:\\test.txt' #定义需要建立的文本名称和路径
new_file = open(file_path,'w') #用open函数建立一个新的文本文件
new_file.close() #用close()方法关闭新建的文件
print("%s 成功建立!"%(file_path)) #提示新建文本成功

文本名称和路径需要考虑转义符号的影响。如上方代码中的’e:\test.txt’ 字符串中的“\t”本是是一个横向制表符,如果直接使用将出错。取消转义的另一方法是在字符串前加原始字符串限制符号(r或R),如:file_path = r'e:\test.txt'
用open函数 建立(打开)文件
open函数属于系统内置函数,支持对字符串或二进制文件的打开操作,返回可操作的文件对象。常用格式:open(fileName, mode='w'),mode参数的详细用法如下:
| mode参数值 | 功能描述 |
|---|---|
| ‘r’ | 以只读方式打开已经存在的文件 |
| ‘w’ | 以可写方式打开文件;若指定的文件不存在,则建立新文件 |
| ‘x’ | 以可写方式建立一个新文件 |
| ‘a’ | 以追加写入方式打开一个文件;若指定的文件不存在,则建立新文件,再追加写入 |
| ‘b’ | 二进制模式 |
| ‘t’ | 文本模式 |
| ‘+’ | 以读写方式打开一个文件 |
| ‘U’ | 通用换行符模式(不建议使用 |
其中,r(只读)、w(只写)、x(新建)、a(追加)为打开文件的基本模式;b、t、+、U与基本模式组合使用,对应二进制、文本、读写、通用换行符;mode默认值为’rt’(读操作)。
用close() 方法关闭文件
如果不关闭,则打开的文件对象一直存在内存中(直至操作系统退出或者被相关程序清理),容易出现内存溢出等错误。
用f.write(s)方法写内容
含义:代表以可写方式打开的文件对象;s为将要写入文件的内容;返回写入的字节数。
file_path = r'e:\test.txt' #指定需要建立或打开的文本名称和路径
new_file = open(file_path,'w') #用open函数建立一个新的文本文件
t_n = new_file.write('I like Python!') #用文件对象write()方法写字符串
new_file.close() #用close()方法关闭新建的文件
print("往文件里写入%d字节内容"%(t_n)) #提示往文件里写入的字节数
执行结果如下:

注意:第二次执行该代码时,文本内容不变,说明以’w’模式打开文本文件,往里面写内容时,是从文件开始写的,第二次写的内容会覆盖第一次的。若要解决该问题,可以采用’a’模式打开文件。
用f.read(size)方法读取内容
含义:f代表以可读方式打开的文件对象;size为可选参数,指定读取字节数量的内容,不填默认读取全部内容。
file_path = r'e:\test.txt' #指定需要建立或打开的文本名称和路径
new_file = open(file_path,'r') #以只读模式打开test.text文件
c = new_file.read() #用文件对象read()方法读取内容
print(c) #打印读取内容
new_file.close() #关闭打开的文件
执行结果如下:

一次写入多行
t = ['one', 'two', 'three', 'four', 'five', 'six']
f = open(r'e:\test2.txt', 'a') #追加写入模式打开文件
for i in t: #循环,迭代获取列表元素
f.write(i+'\n') #把每个元素循环写入文件中,末尾换行加\n
f.close() #关闭文件
print('连续写入完成') #提示写入结束
执行结果如下:

在E盘根目录下打开test2.txt文件,内容如下:

一次读一行
f.readline(s),f代表以可读模式打开的文件;s为可选参数,代表读取指定大小的字节,若没有设置,则以行为单位返回字符串。
f = open(r'e:\test2.txt','r')
r = 1
while r:
r=f.readline() #一次读取一行
print(r)
执行结果如下:

以列表格式读取多行
f.readlines(),f代表以可读模式打开的文件;
f = open(r'e:\test2.txt','r')
L_r = f.readlines() #以列表格式读取多行
print(L_r)
执行结果如下:

连续读特定字节数量的内容
f = open(r'e:\test2.txt','r') #以只读方式打开test2.txt文件
print(f.readline(2)) #第一次,读取文件头2个字节
print(f.readline()) #继续读取同一行,剩余字节
print(f.read(4)) #继续读取4个字节
执行结果如下:

注意:在连续读取同一个文件的情况下,后一个读取动作(readline()或read())都在前一个读完的字节位置后继续读取,而不是从文件头读。
在指定位置读内容
f.tell():f代表已打开的文件,tell()方法返回当前文件可以读写的位置(字节数)
f = open(r'e:\test2.txt', 'r')
print(f.readline(3)) #读取3个字节
print(f.tell()) #获取当前位置
执行结果如下:

f.seek(offset[,whence]):f代表已打开的文件,seek()方法重新指定将要读写的当前位置。offset参数设置位置的偏移量的字节数。whence参数可选,确定文件起计位置,默认值为0,代表从文件的开始位置+偏移量来确认当前位置。
f = open(r'e:\test2.txt', 'r')
print(f.seek(5)) #指定当前位置为5
print(f.read(3)) #从5开始读取3个字节
执行结果如下:

在指定位置写内容
f = open(r'e:\test2.txt', 'w')
f.seek(5)
f.write('------') #试图往文件内容中间位置插入新的内容
f.close()
执行结果如下:

注意:文件中其他内容都丢失,只能在第17个字节处发现新写入的内容。除了可以采用尾部追加内容外,要在文件内容中间进行增加或修改,可以先通过列表读取所有内容,然后再修改列表内容,最后再写入文件。
fpath = r'e:\test3.txt' #E盘下没有test3.txt文件
flag = False
try: #异常捕捉开始
f = open(fpath, 'r') #试图打开不存在的test3.txt文件
print(f.read())
flag = True
except: #捕捉异常
print('打开%s文件报错,请检查!'%(fpath)) #出错提示
finally: #无论出错与否,都强制执行以下代码
if flag: #如果文件正常打开
f.close() #关闭文件
print('关闭文件')
else: #文件打开异常
print('关闭程序') #退出程序提示
执行结果如下:

在Python自带的os模块里,通过path对象的各种方法可以实现对路径的各种操作。
os.path.abspath(p):abspath()以字符串形式为返回平台归一化(考虑了跨操作系统)的绝对路径;p为指定的路径名称(字符型)。若p指定为’.‘,则代表当前路径(等价于os.path.curdir)。import os #导入os模块
print(os.path.abspath('.')) #返回当前绝对路径
print(os.path.abspath(os.path.curdir))

os.path.exists(p):p为指定的路径名称(字符型);若存在,返回True,不存在返回False。也可以通过os.path.isfile(p)直接判断。import os #导入os模块
print(os.path.exists(r'e:\test2.txt')) #用exists()方法判断test2.txt文件是否存在
print(os.path.isfile(r'e:\test3.txt')) #用isfile()方法判断test3.txt文件是否存在

os.path.isdir(p):p为字符串格式的路径;存在返回True,不存在返回False。也可以用os.path.exists(p)直接判断路径。import os #导入os模块
print(os.path.isdir(r'e:\\')) #isdir()方法判断e:\\路径是否存在
print(os.path.exists(r'f:\\')) #用exists()方法判断f:\\路径是否存在

os.makedirs(p):p为字符串形式的需要建立的路径;建立不成功,抛出OSError出错信息,建立成功,则在对应的路径下建立新的文件夹。import os #导入os模块
os.makedirs(r'e:\folder') #在E盘建立folder文件夹

import os #导入os模块
import sys #导入sys模块
get_cur_path = os.path.abspath(os.path.curdir) #获取程序当前路径
f_n = get_cur_path + '\\files' #在当前路径下建立子路径files
try:
if not os.path.isdir(f_n): #确认路径不存在
os.makedirs(f_n) #建立子路径
except:
print("建立子文件夹%s出错!"%(f_n)) #提示建立出错
sys.exit() #退出程序
#===================================================上面为动态建立文件夹
f_n = f_n + '\\test3.txt' #准备在新建立的子路径下存放文件test3.txt
flag = False
try:
f = open(f_n, 'w') #第一次执行,在新路径下新建新文件test3.txt并打开
print(f.write('OK')) #写入OK,并返回2字节的数字
flag = True
print('文件%s写入正常!'%(f_n))
except:
print('打开%s文件出错,请检查!'%(f_n))
finally:
if flag:
f.close()
print('关闭文件!')
else:
print('关闭程序!')
执行结果如下:
