一:文件路径
Python在不同系统中的文件路径编写的方法是不一样的。
1:linux 和 Mac
使用正斜杠 "/" 作为它们的路径分隔符。
2:windows
路径书写使用反斜杠 "" 作为文件夹之间的分隔符。
如果想要程序运行在所有操作系统上,在编写 Python 脚本时,就必须处理这两种情况。
那么,该如何处理下边的情况呢?
import os myFiles = ['accounts.txt', 'details.csv', 'invite.docx'] for filename in myFiles: print(os.path.join('C:\demo\exercise', filename))
输出:
C:\demo\exercise\accounts.txt C:\demo\exercise\details.csv C:\demo\exercise\invite.docx
二:绝对路径和相对路径
如下图所示:
Python为我们提供了处理路径的函数:
调用 os.path.abspath(path) 将返回 path 参数的绝对路径的字符串,这是将相对路径转换为绝对路径的简便方法。
调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。
调用 os.path.relpath(path, start) 将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
调用 os.path.dirname(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容;调用 os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。
测试一下:
lua
复制代码
cmd = os.getcwd() print(cmd) abspath = os.path.abspath('.') print(abspath) abspath1 = os.path.abspath('.\Scripts') print(abspath1) isabs = os.path.isabs('.') print(isabs) isabs1 = os.path.isabs(os.path.abspath('.')) print(isabs1) relpath = os.path.relpath('C:\Windows', 'C:\') print(relpath) relpath1 = os.path.relpath('C:\Windows', 'C:\spam\eggs') print(relpath1) path = 'C:\Windows\System32\calc.exe' basename = os.path.basename(path) print(basename) dirname = os.path.dirname(path) print(dirname) # 路径是否存在 exists = os.path.exists('C:\Windows') print(exists) # 将 文件路径 拆分成元组 path1 = 'C:\Windows\System32\calc.exe' tup = os.path.split(path1) print(tup)
输出:
vbnet
复制代码
F:\camellia\python\testProject F:\camellia\python\testProject F:\camellia\python\testProject\Scripts False True Windows ....\Windows calc.exe C:\Windows\System32 True ('C:\Windows\System32', 'calc.exe')
三:python文件基本操作
1:open 函数用于创建或打开指定文件
具体如下图所示:
以上几种模式具体的区别如下图所示:
测试一下:
perl
复制代码
# 以默认方式打开文件 f = open('log.txt') # 输出文件是否已经关闭 print(f.closed) # 输出访问模式 print(f.mode) #输出编码格式 print(f.encoding) # 输出文件名 print(f.name)
输出:
c
复制代码
False r cp936 log.txt