代码如下:
import os
# 当前IDEL所处的文件夹的绝对路径:D:pythonwork print(os.path.abspath('.')) # 当前所处的文件夹上一级文件夹的绝对路径:D: print(os.path.abspath('..')) # 列出当前目录下,所有的文件夹及文件,返回一个列表 print(os.listdir()) # 列出c:\目录下,所有的文件夹及文件,返回一个列表 print(os.listdir('c:\')) y = [f for f in os.listdir(r'.\') if f.endswith( ('.py', '.txt'))] # r 表示后面的字符不转义 print(y) #
运行结果
例题8-2:利用os.path创建目录、创建多级目录,判断目录、文件是否存在。import os
# 创建一个目录:d:\qun1 os.mkdir('d:\qun1') # 一次性创建多级目录:d:\qun1\test os.makedirs('d:\qun1\test') # 判断指定的目录是否存在,输出:True、或False print(os.path.isdir('d:\qun1\test')) # 判断指定的文件是否存在,输出:True、或False print(os.path.isfile(r'd:\qun1\test\test.txt')) # 判断指定的文件是否存在,输出:True、或False print(os.path.exists(r'd:\qun1\test\test.txt')) # 判断指定的目录是否存在,输出:True、或False print(os.path.exists(r'd:\qun1\test')) # 将路径和文件连接:'d:\qun1\test\test.txt' os.path.join('d:\qun1\test\hybni.txt', 'test.txt')
运行结果
例题8-3:利用shutil复制、移动目录及文件。
f = open("D:\系统分析与设计\python\hello.txt", 'w+', encoding='utf8')
for i in range(1, 11):
f.write("HelloWorld! "+str(i)+"n")
f.close()
f1 = open("D:\系统分析与设计\python\hello.txt", 'r', encoding='utf8')
c = f1.readlines()
for j in c:
print(j, end='')
f1.close()
运行结果
例题8-4:向文本文件中写入内容,然后再读出。用w 模式打开文件时,若文件不存在,则会自动创建它。
s1 = '我在学Python.n文本文件的读写n' # 转义字符n表示换行
s2 = ['人生苦短', '我学Python.'] # 所有元素,作为一行,添加
s3 = ['人生苦短n', '我学Pythonn'] # 元素后面有换行符,可作为多行添加
with open('D:\系统分析与设计\python\hello.txt', 'w') as fp: # w 模式会清空文件原有内容
# write(s1):将字符串s1 一次性写入
fp.write(s1)
# writelines (s2):将列表s2元素迭代写入
fp.writelines(s2)
fp.writelines(s3)
with open('D:\系统分析与设计\python\hello.txt') as fp: # 默认按 r 模式打开文件
# 一次性读取所有内容,返回一个字符串
print(fp.read())
运行结果:
例题8-5:如果想保留原文件内容,只是在文件末尾添加,可用a模式打开文件。此时,若文件不存在,也会自动创建它。
s = '我在学Python.n文本文件的读取n' # 转义字符n表示换行
with open('D:\系统分析与设计\python\hello.txt', 'a+') as fp: # a+ 模式会保留原内容,并在文件末尾添加内容
fp.write(s)
with open('D:\系统分析与设计\python\hello.txt') as fp:
# readlines()不传参数,默认读取所有行,r为列表
r = fp.readlines()
运行结果:
例题8-6:用readline()或readlines()遍历并输出文本文件的内容。
j = 0
with open('D:\系统分析与设计\python\hello.txt', encoding='gb18030') as fp: # 打开文本文件,with语句块内自动关闭
while j < 10:
line = fp.readline() # 每次读取一行,返回的字符串为该行内容
print("(" + str(j) + ")", line)
j+= 1
运行结果:
例题8-7:编写程序,将c盘根目录下所有文本文件中,含有字符串“密码”的所有文件名,写入到一个文件中。
import os
y = [f for f in os.listdir('c:\') if f.endswith(('.txt',))] # 定义空列表,将查找成功的文件名,添加进去 x = [] for f in y: # ------------ 对所有文本文件名进行迭代 ------------------ with open('c:\' + f, encoding='gb18030') as fp: # 用with语句块处理打开的文件 for line in fp: # 对打开的文件,逐行读取 if '密码' in line: # 若字符串'密码'在该行里 # 将文件名添加到列表中 x.append(f) # 跳出本轮循环,开始下一轮循环 break f = open("D:\系统分析与设计\python\hello.txt", 'a+', encoding='gb18030') # 追加模式打开,若文件不存在,创建之 f. writelines(x) f.close()
运行结果:
例题8-9:将图片文件“格利高里·派克.jpg”写入到新文件“格利高里_new.jpg”中
with open('D:\系统分析与设计\python\图片1.jpg', 'rb') as fp:
data = fp.read()
print(type(data)) #
print(data) # Squeezed text (2041 lines)with open('c:\qun1\test\图片1-new.jpg', 'wb+') as fp:
fp.write(data)
print("图片文件,读写成功!")
运行结果:
例题8-10:使用pickle的dump()方法序列化数据,并写入dat二进制文件中
import pickle
x = [1, 2, 3]
y = ('a', 'b', 'c')
z = {4, 5, 6}
d = {'学号': '1914010505', '姓名': '江泓冶', 'age': 18}
data = (100, 'Python', x, y, z, d) # 将各种数据变量,放在一个元组中
with open('D:\系统分析与设计\python\test_pickle.dat', 'wb') as f:
try: # 处理意外
for d in data: # 对data中的元素进行迭代
# 对每一个元素,进行序列化并写入文件对象
pickle.dump(d, f)
print('写dat文件成功。') # 迭代完成后,保存文件,并自动关闭文件
except:
print('写dat文件失败。')
运行结果
例题8-11:使用pickle的load()方法反序列化数据,并输出dat二进制文件内容
import pickle
with open('D:\系统分析与设计\python\test_pickle.dat', 'rb') as f:
end = False # 定义一个逻辑变量,判断文件是否到了结尾
while not end: # 一次dump()方法,对应一次load()方法
try:
x = pickle.load(f) # 读取并反序列化每个数据
# 输出的内容,与原序列化前的内容一致
print(x)
except:
end = True
运行结果:
例题8-15:读取“年度新生人口和死亡人口.xls”的内容。该文件收录了1949-2016年期间,我国部分地区新生人口、死亡人口、净增人口数据。
import xlrd
wb = xlrd.open_workbook("D:\系统分析与设计\python\历年新生人口和死亡人口.xls") # 打开文件
sheet = wb.sheet_by_index(0) # 通过索引获取表格
for i in range(sheet.nrows): # 按行数迭代
row = sheet.row_values(i) # 获取第 i行,返回列表
print(row)
运行结果:
例题8-16:用 openpyxl 库创建 xlsx 文件,并写入数据
wb = openpyxl.Workbook()
# 创建Workbook,并默认会创建一个空表,名称为:Sheet
# 获取默认的sheet,并激活
ws1 = wb.active
ws1.title = 'Sheet1' # 设置Sheet名称
ws1['A1'] = '姓名' # 给单个单元格一个列名
ws1['B1'] = '年龄'
# 写入多个单元格(从有数据的行的下一行写入)
ws1.append(['张三', 18])
ws1.append(['李四', 19])
ws2 = wb.create_sheet('Sheet2') # 创建一个新sheet,可以指定名称
# 复制Sheet1,新sheet名称为Sheet1 Copy
ws3 = wb.copy_worksheet(wb['Sheet1'])
print(wb.sheetnames) # 打印所有表名
wb.save('D:\系统分析与设计\python\test.xlsx') # 保存
运行结果:



