首先我们必须明确一点,我们文件路径中的斜杠都必须是'/',而从Windows中复制过来的路径都是'\',所以我们需要在输入的时候把斜杠都统一为'/'
代码中docx,pptx,模块都可以在cmd中通过镜像源下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx
而openpyxl可以通过在pycharm中的settings中下载
新建txt、docx、pptx、xlsx、文件夹:
import os
import docx
import pptx
import openpyxl
#所在的文件夹路径
path=r"D:/"
#新建的文件的路径
full_path=path + 'new.txt'
#判断有没有一样的文件
isExists=os.path.exists(full_path)
#不过不存在则可以创建,之后的新建省略了这一步
if not isExists:
file = open(full_path, 'w')
file.write("Hello world")#向新建的文件写入数据
file.close()
#如果只有名字,没有路径,就会在该py文件的路径下创建
doc_name="D:/新建文档.docx"#该文档的路径
doc=docx.Document()
doc.save(doc_name)
ppt_name ="D:/新建幻灯片.pptx"
ppt = pptx.Presentation()
ppt.save(ppt_name)
bg_name="D:/新建表格.xlsx"
wb = openpyxl.Workbook()
wb.save(bg_name)
dir_name="D:/新建文件夹"
os.makedirs(dir_name)
对文件的复制、剪切、粘贴:
我们可以将文件(夹)复制到系统的剪切板上:
from PyQt5 import QtWidgets, QtCore
#对于QMimeData的定义,是存放在剪切板的数据类型
data = QtCore.QMimeData()
#定义剪切板
clipboard = QtWidgets.QApplication.clipboard()
app = QtWidgets.QApplication([])
file_path="D:/1.txt"
#将路径转化成url格式
url = QtCore.QUrl.fromLocalFile(file_path)
data.setUrls([url])
app.clipboard().setMimeData(data)#将这个文件设置在剪切板中
运行之后,就可以在桌面右键进行粘贴检查剪切板中的文件是不是路径中对应的文件
而对于PyQt5模块,可以通过镜像源下载:
pip install PyQt5 -i https://pypi.douban.com/simple
我们再从系统的剪切板中获取源文件的路径,利用shutil模块中的copy函数进行复制粘贴即可:
import shutil
source_file_url=data.urls()[0].url()
print(source_file_url)#可以观察一下url的结构,从url中得到路径
source_path=source_file_url[8:]
target_path="D:/新建文件夹"
shutil.copy(source_path,target_path)
url输出为:
file:///D:/1.txt
我们把复制粘贴的代码合在一起:
import shutil
from PyQt5 import QtWidgets, QtCore
#对于QMimeData的定义,是存放在剪切板的数据类型
data = QtCore.QMimeData()
#定义剪切板
clipboard = QtWidgets.QApplication.clipboard()
app = QtWidgets.QApplication([])
file_path="D:/1.txt"
#将路径转化成url格式
url = QtCore.QUrl.fromLocalFile(file_path)
data.setUrls([url])
app.clipboard().setMimeData(data)#将这个文件设置在剪切板中
source_file_url=data.urls()[0].url()
print(source_file_url)#可以观察一下url的结构,从url中得到路径
source_path=source_file_url[8:]
target_path="D:/新建文件夹"
shutil.copy(source_path,target_path)
而对于复制粘贴文件夹,较为复杂
如果是剪切粘贴我们只需要将源文件删除就行,下面我们介绍删除文件(夹):
对于简单的文件删除,我们可以直接os模块的remove函数:
os.remove(path)
但我们也可以选择把文件(夹)删除到回收站当中,这就需要调用shell当中的函数了:
from win32comext.shell import shell,shellcon
path="D:/新建文件夹/1.txt"
debug=False
if not debug:
res = shell.SHFileOperation((0, shellcon.FO_DELETE, path, None,
shellcon.FOF_SILENT | shellcon.FOF_ALLOWUNDO | shellcon.FOF_NOCONFIRMATION,
None, None)) # 删除文件到回收站
if not res[1]:
os.system('del ' + path)
通过安装pywin32和winshell可以使用此函数:
pip3 install pywin32
pip3 install winshell
删除文件夹也可以调用shutil.rmtree进行删除,不会经过回收站:
import shutil
shutil.rmtree("D:/新建文件夹")
上面删除文件夹也会将文件夹中文件一并删掉,不过经过回收站的算法中进入回收站进行还原时也会把原来的文件进行还原。
重命明操作的实现:
import os
srcFile = r"D:\1\2"
dstFile = r"D:\1\1"
os.rename(srcFile,dstFile)#可以实现修改文件名和文件夹名
下面再讲一件路径合成:
有时候在文件夹名和文件名合在一起的时候是需要进行判断的
如果文件夹名是磁盘,由于磁盘的末尾是由斜杠的,所以加上文件名的时候是不需要加斜杠的
如果文件夹名不是磁盘,则再合成路径的时候是需要加上斜杠的。
if(len(newpath)==3):#长度为3,说明是磁盘
all=newpath+newname
else:
all = newpath + "/" + newname