发布时间:2022-09-10 11:30
几日不见,很是生疏啊啊啊啊,温故而知新!
阅读对象:知悉python的基本语法。
前言:导入os模块
import os
每一个运行在计算机上的程序,都有一个'当前目录',或者cwd。所以没有从根文件夹下的文件名或路径,都假定在当前工作目录下。可以利用os.getcwd()函数,可以获取当前工作路径的字符串。(注意:在字符串里,\(反斜杠有特殊含义,所以在字符串中输出反斜杠\需要输入\\))
import os
os.getcwd()
也可以用os.chdir()函数改变当前工作路径。
import os
os.getcwd() # 查看当前工作目录
os.chdir('D:\steam\bin') # 更改当前工作目录
os.getcwd() # 查看更改之后的当前工作目录,发现当前工作目录确实已被更改
程序可以用os.makedirs()创建新文件夹(目录).
import os
os.makedirs('e:\\pythonProject\\exercise1')
在这里,os.makedirs()不仅会创建e:\\pythonProject,也会创建exercise1文件夹,总之,os.makedirs()会创建所有必要的中间文件夹,目的是确保完整路径存在。(当然,如果e盘中有pythonProject文件夹,那么os.makedirs()就不会重新在创建该文件夹,而是进入该文件夹内继续创建exercise1文件夹)
os.path模块包含了很多与文件名和文件路径有关的有用函数。(使用该模块import os即可)
os.path.join()可以将输入的各个参数用反斜杠串联起来,形成一个有效路径。
import os
os.path.join('wallpaper', 'picture', '高清')
有两种方法指定一个文件路径。
第一种是‘绝对路径’,它总是从根文件夹开始的。
第二种是‘相对路径’,它是相对程序的当前目录。
相对路径中,点(.)和点点(..)文件夹,它们并不是真正的文件夹,而是可以在路径中使用的特殊名称。单个点(.)用作文件夹时,它表示当前工作目录。两个点(..)用作文件夹时,它表示当前工作目录的上一(即父文件夹)。
os.path.abspath(path)返回参数(path)的绝对路径的字符串。这是将相对路径转化为绝对路径的简便方法。
import os
os.path.abspath('.')
os.path.abspath('..')
如果输入的参数是绝对路径,那么返回True,如果是相对路径,那么返回False。
import os
os.path.isabs('c:\\visual')
os.path.isabs('.')
os.path.isabs(os.path.abspath('.'))
import os
os.path.relpath('C:\\windows', 'c:\\')
os.path.relpath('c:\\windows', 'c:\\visual\\visual storage')
import os
os.path.dirname('c:\\windows')
os.path.dirname('c:\\visual\\visual storage\\作业')
import os
os.path.basename('c:\\windows')
os.path.basename('c:\\visual\\visual storage\\作业')
import os
os.path.split('c:\\visual\\visual storage\\作业')
另外,如果需要返回每个文件夹的字符串的列表。那么可以使用字符串的split()去处理,以os.path.sep(它会根据程序所在的计算机来输出是正斜杠(在osx和linux上)还是反斜杠(在windows系统上),当然,如果你清楚你的电脑的路径分隔符是\还是/,那么你直接用这个字符也可,这里是为了让你明白os.path.sep是什么意思即可)作为分隔符
------------------------------------------------字符串的split()复习--------------------------------------------------------
(回顾复习,字符串的split()输入的第一个参数是分隔符,如果没有输入第一个参数,那么以各种空白字符分割(诸如空格、制表 符或换行符)间隔字符串),如果输入了,那么字符串将以该参数作为分隔符进行分隔。
还是举个小李子
'you\nare\nmy\nlove\n'.split()
'hello you are my love !'.split()
-----------------------------------------------字符串的split()复习--------------------------------------------------------
继续前文,如何返回每个文件夹的字符串的列表?
'c:\\visual\\visual storage\\作业'.split('\\')
如果上面的知识你已经掌握了,那么意味着你已经可以通过处理路径来获取特定文件和特定文件信息了。这里有一些办法供你使用。
这里需要注意一下,os.path.getsize()返回的是path的大小,path如果是一个文件,那么就是文件大小;如果是文件夹,那么就是文件夹大小,文件夹大小是指文件夹这个数据结构在文件系统中占用的大小,NTFS文件系统中一个簇通常是4096字节,一个文件夹占用一个簇,所以NTFS中任何一个文件夹的大小都是4096字节。
import os
os.path.getsize('c:\\visual\\visual storage')
上面我们知道,os.path.getsize()获取的是path中文件的大小,而不会获取该目录下所有文件的字节数。这里我们来想想怎么获取一个目录下的所有文件。
import os
totalSize = 0
for filename in os.listdir('d:\\Lenovo tools'): # 哎呀,忘记加:冒号了
totalSize += os.path.getsize(filename)
print(totalSize)
import os
os.listdir('D:\\Lenovo tools')
如果你提供的路径不存在,那么许多python程序将会运行崩溃。os.path模块提供了一些检查路径的是否存在的方法。
如果文件存在那么返回True,文件不存在那么返回False。
import os
os.path.exists('d:\\Lenovo tools')
os.path.exists('d:\\Lenovo')
如果参数存在且是文件(不是文件夹),那么返回True,否则返回False
import os
os.path.isfile('d:\\Lenovo tools\\应用在后台运行禁用启用工具.exe') # 该文件存在
os.path.isfile('d:\\Lenovo') # 该文件不存在
os.path.isfile('d:\\Lenovo tools\\hello') # 该文件夹存在但是它不是文件
如果参数存在且是文件夹(不是文件),那么返回True,否则返回False。
import os
os.path.isdir('d:\\Lenovo tools\\应用在后台运行禁用启用工具.exe') # 该文件存在
os.path.isdir('d:\\Lenovo') # 该文件不存在
os.path.isdir('d:\\Lenovo tools\\hello') # 该文件夹存在但是它不是文件
在这里我们只讨论py文件和txt文件
读写文件三步骤:
1. 调用open()函数,返回file对象。
2. 调用file对象的read()和write()方法。
3. 调用file对象的close()方法,关闭该文件。
要用open()函数打开一个文件,需要向里面传入参数,这个参数内容是该文件的路径(绝对路径或者相对路径皆可)。
譬如:打开e盘中的hello文件夹中hello.txt文件。
hello = open('e:\\hello\\hello.txt')
open()会返回一个关于这个文件的file对象,这里我们用变量hello接收。
我们有了file对象(这里给了变量hello),就可通过file对象的一些方法对我们指定的文件进行一些处理。
hello.txt文件内容:
file对象的read()方法可以将指定文件的整个内容读取为一段字符串值。
readlines()会从文件中获取一个字符串的列表,列表中的每一个字符串即为文本中的每一行。
read()方法,譬如:读取hello.txt文件的所有内容(输出以str输出)
hello = open('C:\\hello\\hello.txt')
hello.read()
hello.close() # 如果已经处理好了文件,那么不要忘了关闭文件
readlines(),譬如:读取hello.txt文件的所有内容
hello = open('e:\\hello\\hello.txt')
hello.readlines()
hello.close() # 如果已经处理好了文件,那么不要忘了关闭文件
每个字符串值都以一个换行字符\n 结束。除了文件的最后一行。与上文read()方法得到的单个大字符串相比,字符串的列表通常更容易处理。
python允许你读写文件内容,但是要读写文件,那么打开文件就不应该以只读模式打开。这里需要注意,在前面中,open()中我们写入的第一个参数是文件路径,其实还有第二个参数。但是如果你没有写入第二个参数,那么python默认你输入的’r‘,(以只读模式打开);如果你想要写入文件内容,那么你应该输入第二个参数。这里有一些第二个参数的一些基本信息:
--------------------------------------------------------------------------------------------------------------------------
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb:分别于r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ :可读、可写,文件不存在先创建,不会覆盖,追加在末尾
注意:这里的覆盖是指每次重新打开文件进行操作时覆盖原来的,如果是在打开文件中则不会覆盖
————————————————
版权声明:本文为CSDN博主「07151012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32648375/article/details/83342094
--------------------------------------------------------------------------------------------------------------------------
hello = open('e:\\hello\\hello.txt', 'w')
以写入模式打开文件hello.txt
以w模式写入:
hello = open('e:\\hello\\hello.txt', 'w')
hello.write('\nI am a tough guy!')
hello.close() # 如果已经处理好了文件,那么不要忘了关闭文件
以a模式写入:
hello = open('e:\\hello\\hello.txt')
hello.write('\nYou are my lover!')
hello.close() # 如果已经处理好了文件,那么不要忘了关闭文件
现在再来看一下我们已经操作的文件内容:
hello = open('e:\\hello\\hello.txt', 'r') # 当然你也可以省略'r'不写,因为python会默认只读模式
hello.read() # w模式,a模式是不能用read()