Python之文件操作

一、文件外部操作

本节主要介绍Python的os模块对文件夹和文件等的操作,例如创建、删除、重命名文件,获取文件路径、文件名、文件扩展名等。

不涉及对文件内容进行操作。

 1 #Author:Azrael
 2 # _*_ coding:utf-8 _*_
 3 import os
 4 import shutil
 5 print(os.getcwd())#打印当前文件所在路径
 6 print(os.listdir('D:\Python代码'))#列出该路径下所有的文件和文件夹
 7 os.remove(r'C:\Users\Administrator\Desktop\test.txt')#删除指定文件
 8 os.removedirs(r'C:\Users\Administrator\Desktop\test')#删除指定目录
 9 print(os.path.isfile(r'C:\Users\Administrator\Desktop\test.txt'))#判断指定是否为文件
10 print(os.path.isdir(r'C:\Users\Administrator\Desktop\test'))#判断指定是否为文件夹
11 print(os.path.isabs(r'C:\Users\Administrator\Desktop\test'))#判断是否为绝对路径
12 print(os.path.exists(r'C:\Users\Administrator\Desktop\test'))#判断指定文件夹是否存在
13 print(os.path.split(r'C:\Users\Administrator\Desktop\test'))#把路径分割为目录名和文件名
14 print(os.path.splitext(r'C:\Users\Administrator\Desktop\test.txt'))#把路径分割为路径名和文件扩展名
15 print(os.path.dirname(r'C:\Users\Administrator\Desktop\test.txt'))#获取文件路径
16 print(os.path.basename(r'C:\Users\Administrator\Desktop\test.txt'))#获取文件名
17 os.system('ipconfig')#获取本机网络信息
18 os.putenv("test","eee")#设置一个环境变量,临时的
19 print(os.getenv("test")) #获取一个环境变量,如果没有返回none
20 os.linesep#返回当前平台的行终止符
21 os.rename(r'C:\Users\Administrator\Desktop\test1.txt', r'C:\Users\Administrator\Desktop\test.txt')#重命名
22 os.makedirs(r'C:\Users\Administrator\Desktop\test1\test1')#创建目录,相当于mkdir -p
23 os.mkdir(r'C:\Users\Administrator\Desktop\test1')#创建目录
24 print(os.stat(r'C:\Users\Administrator\Desktop\test1'))#获取指定文件的属主、组、大小、atime等信息
25 #os.chmod(r'C:\Users\Administrator\Desktop\test1')  #windows下不能这样使用
26 os._exit('进程号')#退出指定进程号的进程
27 print(os.path.getsize(r'C:\Users\Administrator\Desktop\test.txt'))#获取文件大小
28 os.mknod(r'C:\Users\Administrator\Desktop\test.txt') #windows无法使用;创建文件test.txt
29 
30 os.mkdir(r'C:\Users\Administrator\Desktop\test')    #创建文件夹
31 open(r'C:\Users\Administrator\Desktop\test.txt','w')    #创建文件
32 shutil.copyfile(r'C:\Users\Administrator\Desktop\test.txt',r'C:\Users\Administrator\Desktop\test1.txt')
33 #复制test.txt并命名为test1.txt,test1.txt存在与否无关系
34 shutil.copy(r'C:\Users\Administrator\Desktop\test.txt',r'C:\Users\Administrator\Desktop\test1.txt')
35 #复制test.txt并命名为test1.txt,test1.txt存在与否无关系
36 shutil.copytree(r'C:\Users\Administrator\Desktop\test',r'C:\Users\Administrator\Desktop\test1')
37 #将文件夹test复制成并命名为test1,test1不能已经存在
38 os.rename(r'C:\Users\Administrator\Desktop\test',r'C:\Users\Administrator\Desktop\test1')
39 #将test重命名为test1.文件和文件夹都适用
40 shutil.move(r'C:\Users\Administrator\Desktop\test.txt',r'C:\Users\Administrator\Desktop\test1\test.txt')
41 #将桌面的test.txt移动到桌面的test1文件夹下面
42 os.remove(r'C:\Users\Administrator\Desktop\test1\test.txt')    #删除文件
43 os.rmdir(r'C:\Users\Administrator\Desktop\test1')   #删除空目录
44 shutil.rmtree(r'C:\Users\Administrator\Desktop\test1')  #删除目录
45 print(os.getcwd())  #打印当前所在的路径
46 os.chdir(r'C:\Users\Administrator\Desktop\test1') #切换路径
47 print(os.getcwd())  #打印当前所在的路径
文件外部操作

 

二、文件内容操作

1、打开文件模式

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

  "+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

  "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

  "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

2、语法介绍

 1 #Author:Azrael
 2 f=open("test",encoding="utf-8")#打开指定文件,默认为只读模式
 3 print(f.readline())#打印文件一行内容,但是文件所有内容已经加载内存
 4 print(f.readlines())#从光标所在地起打印文件所有内容,生成一个列表,以一行为一个元素
 5 print(f.read())#从光标所在地起打印文件所有内容
 6 f.close()#关闭文件
 7 f.write("bbbbbbb")#将字符串bbbbbbb写入文件
 8 print(f.readable())#判断当前打开文件方式是否可读
 9 f.seek(50)#将光标移动到指定位置
10 print(f.tell())#返回当前光标所在位置
11 print(f.writable())#判断当前打开文件方式是否可写
12 f.truncate(5)#截取文件指定字符长度,只有在可写情况才能执行
13 print(f.seekable())#判断文件光标是否可操作
14 with open("test",encoding="utf-8") as f: #上下文管理,避免忘记关闭打开文件
15     print(f.readline())
Python操作文件内容

 

三、练习

1、题目要求

 1 查找:
 2 
 3 用户输入:如果你不曾心碎你不会懂得我伤悲
 4 
 5 返回结果:结果显示此句后所有内容
 6 
 7 增加:
 8 
 9 用户输入:谁在乎我的心里有多苦
10 
11      谁在意我的明天去何处
12 
13 返回结果:文件中增加用户输入内容
14 
15 删除:
16 
17 用户输入:谁在乎我的心里有多苦
18 
19      谁在意我的明天去何处
20 
21 返回结果:文件中增加用户输入内容
题目要求

 

 1 歌手:刘德华 专辑:忘情水
 2 曲:陈耀川词:李安修
 3 曾经年少爱追梦一心只想往前飞
 4 行遍千山和万水一路走来不能回
 5 蓦然回首情已远身不由已在天边
 6 才明白爱恨情仇最伤最痛是后悔
 7 如果你不曾心碎你不会懂得我伤悲
 8 当我眼中有泪别问我是为谁
 9 就让我忘了这一切
10 啊给我一杯忘情水换我一夜不流泪
11 所有真心真意任它雨打风吹
12 付出的爱收不回
13 给我一杯忘情水换我一生不伤悲
14 就算我会喝醉就算我会心碎
15 不会看见我流泪
题目文本元素

 

3、参考答案

 1 #Author:Azrael
 2 import os
 3 #查找
 4 f=open("test",'r+',encoding="utf-8")
 5 with open("test",encoding="utf-8") as f:
 6     select_info=input("麻烦您输入查询标志:")
 7     for line in f :
 8         if select_info in line:
 9             print(f.read())
10 #插入
11 with open("test",'a', encoding="utf-8") as f:
12     insert_info=input("麻烦您输入想增加的内容:")
13     list=insert_info.split(",")
14     for info in list:
15         f.write(info+"\r")
16 #删除
17 with open("test",'r+',encoding="utf-8") as f,\
18 open("test1",'a',encoding="utf-8") as f_new:
19     delete_info=input("麻烦您输入想删除的内容:")
20     delete_list=delete_info.split(",")
21     for line in f:
22         if line.strip() in delete_list:
23             print(line)
24         else:
25             f_new.writelines(line)
26 
27 os.replace("test1","test")
参考答案

 

posted @ 2018-01-23 15:07  帅气的搬砖工  阅读(238)  评论(0编辑  收藏  举报