打开文件
open(file,mode=‘r’,…… )
r:以只读模式打开文件(默认)
w:以写入模式打开文件,会覆盖已经存在的文件
x:如果文件已经存在,使用此模式打开将会引发异常
a:以写入模式打开,如果文件存在,在末尾追加写入
b:以二进制模式打开文件
t:以文本模式打开(默认)
+:可读写模式(添加到其他模式中使用)
U:通用换行符支持
注:合法的mode有: r、rb、r+、rb+、w、wb、w+、wb+、a、ab、a+、ab+
f = open(“E:\test.txt”)
f
<_io.TextIOWrapper name=‘E:\test.txt’ mode=‘r’ encoding=‘cp936’>
文件对象方法
关闭文件
f.close()
读取一行
f.readline()
‘第1行:Hello Word!\n’
如果出现以下错误:
Traceback (most recent call last):
File “
f.readline()
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position 2: illegal multibyte sequence
是由于文件编码不一致导致
解决方案: 加上编码限制
f = open(“E:\test.txt”,encoding=“UTF-8”)
返回当前在文件中的位置
f.tell()
36
文件读取
f.read(size)——从文件读取size个字节
例如:读出前5个字符
f.read(5)
‘第2行:H’
当未给定size或给定负值时,读取剩余的所有字节,然后作为字符串返回
f.read(-1)
‘ello Word!\n第3行:Hello Word!\n第4行:Hello Word!\n第5行:Hello Word!\n第6行:Hello Word!\n第7行:Hello Word!\n第8行:Hello Word!’f.tell()
198
写入文件
f.write(str)——将字符串str写入文件
例如:
f.write(“加入新内容”)
5
如果出现如下错误:
Traceback (most recent call last):
File “
f.write(“加入新内容”)
io.UnsupportedOperation: not writable
更改文件打开模式为可写入模式:(w会覆盖已有文件内容)
f = open(“E:\test.txt”,mode=“w”,encoding=“UTF-8”)
f.writelines(seq)——向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
移动文件指针
f.seek(offset,from)——在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
例如:
f = open(“E:\test.txt”,mode=“a+”,encoding=“UTF-8”)
f.seek(0)
0f.readline()
‘第1行:Hello Word!\n’
将f转化为列表
list(f)
[‘第2行:Hello Word!\n’, ‘第3行:Hello Word!\n’, ‘第4行:Hello Word!\n’, ‘第5行:Hello Word!\n’, ‘第6行:Hello Word!\n’, ‘第7行:Hello Word!\n’, ‘第8行:Hello Word!’]
把指针定位到初始位置,分行打出
f.seek(0)
0for each_line in f:
print(each_line)
第1行:Hello Word!
第2行:Hello Word!
第3行:Hello Word!
第4行:Hello Word!
第5行:Hello Word!
第6行:Hello Word!
第7行:Hello Word!
第8行:Hello Word!
Python之文件系统
导入模块:import random
OS(Operating System)操作系统模块
我们所知道常用的操作系统就有:Windows,Mac OS,Linux,UNIX等,这些操作系统底层对于文件系统的访问工作原理是不一样的,因此你可能就要针对不同的系统来考虑使用哪些文件系统模块。这样的做法是非常不友好且麻烦的,因为这样就意味着当你的程序运行环境一改变,你就要相应的修改大量的代码来应付。
返回当前的工作目录
import os
os.getcwd()
‘E:\Anaconda’
切换工作目录到E
os.chdir(‘E:\’)
列举指定目录中的文件名
os.listdir(‘E:\’)
[’$RECYCLE.BIN’, ‘.temp’, ‘Anaconda’, ‘BaiduNetdiskDownload’, ‘CrystalDiskInfo’, ‘Driver Sweeper’, ‘eclipsetest’, ‘Java’, ‘kinggsoft’, ‘KuGouCache’, ‘python-deeplearning’, ‘QMDownload’, ‘qqpcmgr_docpro’, ‘System Volume Information’, ‘Tencent’, ‘test.txt’, ‘xshell’]
创建目录(是建立在有a的前提下,如果没有a会报错)
os.mkdir(‘E:\a\b’)
建多级目录
os.makedirs(path)
删除单层目录,非空抛异常
os.rmdir(‘E:\a\b’)
删除文件
os.remove(path)
删除目录(包括其子目录),非空抛异常
os.removedirs(path)
os.rename(old,new)
>>>os.system(‘cmd’)
打开计算器,运行系统的shell命令
os.system(‘calc’)
0
代指当前目录
os.curdir
‘.’os.listdir(os.curdir)
[’.nonadmin’, ‘api-ms-win-core-console-l1-1-0.dll’, ‘api-ms-win-core-datetime-l1-1-0.dll’, ‘api-ms-win-core-debug-l1-1-0.dll’, ‘api-ms-win-core-errorhandling-l1-1-0.dll’, ‘api-ms-win-core-file-l1-1-0.dll’, ‘api-ms-win-core-file-l1-2-0.dll’, ‘api-ms-win-core-file-l2-1-0.dll’, ‘api-ms-win-core-handle-l1-1-0.dll’, ‘api-ms-win-core-heap-l1-1-0.dll’, ‘api-ms-win-core-interlocked-l1-1-0.dll’, ‘api-ms-win-core-libraryloader-l1-1-0.dll’, ‘api-ms-win-core-localization-l1-2-0.dll’, ‘api-ms-win-core-memory-l1-1-0.dll’, ‘api-ms-win-core-namedpipe-l1-1-0.dll’, ‘api-ms-win-core-processenvironment-l1-1-0.dll’, ‘api-ms-win-core-processthreads-l1-1-0.dll’, ‘api-ms-win-core-processthreads-l1-1-1.dll’, ‘api-ms-win-core-profile-l1-1-0.dll’, ‘api-ms-win-core-rtlsupport-l1-1-0.dll’, ‘api-ms-win-core-string-l1-1-0.dll’, ‘api-ms-win-core-synch-l1-1-0.dll’, ‘api-ms-win-core-synch-l1-2-0.dll’, ‘api-ms-win-core-sysinfo-l1-1-0.dll’, ‘api-ms-win-core-timezone-l1-1-0.dll’, ‘api-ms-win-core-util-l1-1-0.dll’, ‘api-ms-win-crt-conio-l1-1-0.dll’, ‘api-ms-win-crt-convert-l1-1-0.dll’, ‘api-ms-win-crt-environment-l1-1-0.dll’, ‘api-ms-win-crt-filesystem-l1-1-0.dll’, ‘api-ms-win-crt-heap-l1-1-0.dll’, ‘api-ms-win-crt-locale-l1-1-0.dll’, ‘api-ms-win-crt-math-l1-1-0.dll’, ‘api-ms-win-crt-multibyte-l1-1-0.dll’, ‘api-ms-win-crt-private-l1-1-0.dll’, ‘api-ms-win-crt-process-l1-1-0.dll’, ‘api-ms-win-crt-runtime-l1-1-0.dll’, ‘api-ms-win-crt-stdio-l1-1-0.dll’, ‘api-ms-win-crt-string-l1-1-0.dll’, ‘api-ms-win-crt-time-l1-1-0.dll’, ‘api-ms-win-crt-utility-l1-1-0.dll’, ‘concrt140.dll’, ‘conda-meta’, ‘condabin’, ‘cwp.py’, ‘DLLs’, ‘envs’, ‘etc’, ‘include’, ‘Lib’, ‘Library’, ‘libs’, ‘LICENSE_PYTHON.txt’, ‘man’, ‘Menu’, ‘msvcp140.dll’, ‘msvcp140_1.dll’, ‘msvcp140_2.dll’, ‘pkgs’, ‘python.exe’, ‘python.pdb’, ‘python3.dll’, ‘python37.dll’, ‘python37.pdb’, ‘pythonw.exe’, ‘pythonw.pdb’, ‘qt.conf’, ‘Scripts’, ‘share’, ‘shell’, ‘sip’, ‘tcl’, ‘Tools’, ‘ucrtbase.dll’, ‘Uninstall-Anaconda3.exe’, ‘vccorlib140.dll’, ‘vcomp140.dll’, ‘vcruntime140.dll’, ‘venvlauncher.exe’, ‘venvwlauncher.exe’, ‘xlwings32-0.15.10.dll’, ‘xlwings64-0.15.10.dll’, ‘_conda.exe’]
代指上一级目录‘…’
os.pardir
‘…’
输出操作系统特定的路径分隔符
os.sep
‘\’
当前平台使用的行终止符(Win:\r\n,Linux:\n)
os.linesep
‘\r\n’
指代当前操作系统(posix,nt,mac,os2,ce,java)
os.name
‘nt’
os.path模块
去掉目录路径,单独返回文件名
os.path.basename(‘E:\test.txt’)
‘\test.txt’
去掉文件名,单独返回路径
os.path.dirname(‘E:\test.txt’)
‘E:’
合并成目录
os.path.join(path1,……,path2)
例如:
os.path.join(‘a’,‘b’,‘c’)
‘a\b\c’os.path.join(‘c:\’,‘a’) #要自己加上\
‘c:\a’
把目录和文件分离(如果path是纯目录,没有文件,会把最后一级目录分离)
os.path.split(‘E:\test.txt’)
(‘E:’, ‘\test.txt’)
分离文件名和扩展名
os.path.splitext(‘E:\test.txt’)
(‘E:\test’, ‘.txt’)
查看文件大小
os.path.getsize(“E:\test.txt”)
198
查看文件最近的访问时间
os.path.getatime(“E:\test.txt”)
1589029261.6557696
#返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数来换算
查看文件创建时间
os.path.getctime(“E:\test.txt”)
1589026719.4745226
查看文件最新修改时间
os.path.getmtime(“E:\test.txt”)
1589029261.6557696
将返回的时间改的更人性化,需要导入time模块
import time
time.gmtime(os.path.getatime(“E:\test.txt”))
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=9, tm_hour=13, tm_min=1, tm_sec=1, tm_wday=5, tm_yday=130, tm_isdst=0)
time.localtime(os.path.getatime(“E:\test.txt”))
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=9, tm_hour=21, tm_min=1, tm_sec=1, tm_wday=5, tm_yday=130, tm_isdst=0)
判断指定路径(目录或文件)是否存在
os.path.exists(“E:\test.txt”)
True
判断指定路径是否为绝对路径
os.path.isabs(“E:\test.txt”)
True
判断指定路径是否存在且是一个目录
os.path.isdir(“E:\test.txt”)
False
判断指定路径是否存在且是一个文件
os.path.isfile(“E:\test.txt”)
True
判断指定路径是否存在且是一个符号链接
os.path.islink(“E:\test.txt”)
False
判断指定路径是否存在且是一个挂载点
os.path.ismount(“E:\test.txt”)
Falseos.path.ismount(“E:\”)
True
判断path1和path2两个路径是否指向同一文件
os.path.samefile(“E:\test.txt”,“E:\test.txt”)
True
p.s.
路径:path——“E:\test.txt”
文件:file——“E:\test.txt”
原文链接:https://blog.csdn.net/qq_44081582/article/details/106026889