day 12 文件操作
1.文件定位读写 f.seek(2,0)
##### f.seek(2,0) In [4]: f = open("test.py","r") In [5]: f.seek(2,0) Out[5]: 2 #微调 2 两个字符 #大方向 0表示从开头读,1表示当前位置, 2表示文件末尾 In [6]: f.readline() Out[6]: 'port random\n' In [11]: f.seek(0,0) #从头开始读 Out[11]: 0
2.文件的当前位置 f.tell()
#### f.tell() In [9]: f.read() Out[9]: 'import random\ndfnsaf \ndsafdsa \nfdsaf \n\n' In [10]: f.tell() Out[10]: 44 In [11]: f.seek(0,0) Out[11]: 0 In [12]: f.tell() Out[12]: 0 In [13]: f.read(1) Out[13]: 'i' In [14]: f.tell() Out[14]: 1
3. 文件,文件夹的常见操作 os
In [15]: import os In [17]: os.rename("test.py","let.py") #重命名 In [19]: os.remove("test1.py") #删除文件 In [21]: os.mkdir("test") #创建目录 In [23]: os.rmdir("test") #删除目录 In [26]: os.getcwd() #获取当前绝对路径 Out[26]: '/home/python/pythonS6/python基础06' In [27]: f = open("../xxx,txt","w") #在上级目录创建文件 In [29]: f.close() In [30]: ls ../ python基础01/ python基础03/ python基础05/ xxx,txt In [31]: os.listdir("./") #获取当前目录下的所有文件 Out[31]: ['07-read.py', '04-交换两个值.py', 'aaa附件.py', 'aaa.py', 'love.py', '02-匿名函数拓展.py', 'aa[cp]a', '10-大文件读取.py', '01-匿名函数.py', '09-复制文件名.py', 'aaa[附件]', '05-num+=.py', 'bbb', 'aaa[cp].py', '08-复制文件.py', 'let.py', 'file_name + "[附件]"', '03-匿名函数.py', '06-write.py', 'aaa[大文件].py']
4.小应用:批量重命名文件
1)版本1:创建文件
python@ubuntu:~/pythonS6/python基础06$ mkdir test python@ubuntu:~/pythonS6/python基础06$ cd test/ python@ubuntu:~/pythonS6/python基础06/test$ touch 权利的游戏-{0..5}.avi python@ubuntu:~/pythonS6/python基础06/test$ ls 权利的游戏-0.avi 权利的游戏-2.avi 权利的游戏-4.avi 权利的游戏-1.avi 权利的游戏-3.avi 权利的游戏-5.avi
import os #1.获取用户要修改的目录下的文件 dir_name = input("请输入要修改的目录:") #2.找到文件名字 list_dir = os.listdir(dir_name) for name in list_dir: print(name) #3.修改文件名字
#### 运行结果 python@ubuntu:~/pythonS6/python基础06$ python3 11-文件批量重命名.py 请输入要修改的目录:test 权利的游戏-0.avi 权利的游戏-2.avi 权利的游戏-1.avi 权利的游戏-3.avi 权利的游戏-5.avi 权利的游戏-4.avi
2)版本2:
import os #1.获取用户要修改的目录下的文件 dir_name = input("请输入要修改的目录:") #2.找到文件名字 list_dir = os.listdir(dir_name) for name in list_dir: print(name) os.rename(name,"[jd]-"+name) #3.修改文件名字
### 报错 没有文件 ,因为文件和程序没在同一目录 Traceback (most recent call last): File "11-文件批量重命名.py", line 10, in <module> os.rename(name,"[jd]-"+name) FileNotFoundError: [Errno 2] No such file or directory: '权利的游戏-0.avi' -> '[jd]-权利的游戏-0.avi'
3)版本3:修改默认目录
import os #1.获取用户要修改的目录下的文件 dir_name = input("请输入要修改的目录:") #2.找到文件名字 list_dir = os.listdir(dir_name) os.chdir(dir_name) #3.修改文件名字 for name in list_dir: print(name) os.rename(name,"[jd]-"+name)
└── test ├── [jd]-权利的游戏-0.avi ├── [jd]-权利的游戏-1.avi ├── [jd]-权利的游戏-2.avi ├── [jd]-权利的游戏-3.avi ├── [jd]-权利的游戏-4.avi └── [jd]-权利的游戏-5.avi
4)版本4:
import os #1.获取用户要修改的目录下的文件 dir_name = input("请输入要修改的目录:") #2.找到文件名字 list_dir = os.listdir(dir_name) #os.chdir(dir_name) #3.修改文件名字 for name in list_dir: print(name) old_file_name = dir_name + "/" +name new_file_name = dir_name + "/" + "al-" +name os.rename(old_file_name,new_file_name)
└── test ├── al-[jd]-权利的游戏-0.avi ├── al-[jd]-权利的游戏-1.avi ├── al-[jd]-权利的游戏-2.avi ├── al-[jd]-权利的游戏-3.avi ├── al-[jd]-权利的游戏-4.avi └── al-[jd]-权利的游戏-5.avi
5。批量删除文件名前多余的东西