使用 python 重命名文件名
Rename the filename using python
我有一个文件夹,里面有多个文件。在这些文件中,我想重命名其中的一些。例如:PB report December21 North.xlsb、PB report November21 North.xslb等。他们都有一个相同的开始 - PB 报告。我想更改他们的名字,只留下 PB 报告和月份。例如 12 月 PB 报告.
我试过这个代码:
import os
path = r'C://Users//greencolor//Desktop//Autoreport//Load_attachments//'
for filename in os.listdir(path):
if filename.startswith("PB report"):
os.rename(filename, filename[:-8])
-8表示我要从第8个字符开始拆分名字
我收到这个错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
有什么建议吗?
使用 os.rename
重命名文件时需要路径:
替换:
os.rename(filename, filename[:-8])
与:
filename_part, extension = os.path.splitext(filename)
os.rename(path+filename, path+filename_part[:-8]+extension)
问题很可能是找不到文件,因为没有指定目录。您需要在文件名中添加路径:
import os
path = r'C://Users//greencolor//Desktop//Autoreport//Load_attachments//'
for filename in os.listdir(path):
if filename.startswith("PB report"):
os.rename(os.path.join(path, filename), os.path.join(path, filename[:-8]))
这是一个典型的例子,说明如何使用 os
/os.path
来操作路径并不方便。这就是为什么 pathlib
exists. By treating paths as objects, rather than strings everything becomes more sensible. By using a combination of path.iterdir()
and path.rename()
你可以实现你想要的:
from pathlib import Path
path = Path(r'your path')
for file in path.iterdir():
if file.name.startswith("PB report"):
file.rename(file.with_stem(file.stem[:-8]))
注意 stem
means the filename without the extension and that with_stem
was added in Python 3.9. So for older versions you can still use with_name
:
file.rename(file.with_name(file.stem[:-8] + file.suffix))
其中 suffix
是文件的扩展名。
我有一个文件夹,里面有多个文件。在这些文件中,我想重命名其中的一些。例如:PB report December21 North.xlsb、PB report November21 North.xslb等。他们都有一个相同的开始 - PB 报告。我想更改他们的名字,只留下 PB 报告和月份。例如 12 月 PB 报告.
我试过这个代码:
import os
path = r'C://Users//greencolor//Desktop//Autoreport//Load_attachments//'
for filename in os.listdir(path):
if filename.startswith("PB report"):
os.rename(filename, filename[:-8])
-8表示我要从第8个字符开始拆分名字
我收到这个错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
有什么建议吗?
使用 os.rename
重命名文件时需要路径:
替换:
os.rename(filename, filename[:-8])
与:
filename_part, extension = os.path.splitext(filename)
os.rename(path+filename, path+filename_part[:-8]+extension)
问题很可能是找不到文件,因为没有指定目录。您需要在文件名中添加路径:
import os
path = r'C://Users//greencolor//Desktop//Autoreport//Load_attachments//'
for filename in os.listdir(path):
if filename.startswith("PB report"):
os.rename(os.path.join(path, filename), os.path.join(path, filename[:-8]))
这是一个典型的例子,说明如何使用 os
/os.path
来操作路径并不方便。这就是为什么 pathlib
exists. By treating paths as objects, rather than strings everything becomes more sensible. By using a combination of path.iterdir()
and path.rename()
你可以实现你想要的:
from pathlib import Path
path = Path(r'your path')
for file in path.iterdir():
if file.name.startswith("PB report"):
file.rename(file.with_stem(file.stem[:-8]))
注意 stem
means the filename without the extension and that with_stem
was added in Python 3.9. So for older versions you can still use with_name
:
file.rename(file.with_name(file.stem[:-8] + file.suffix))
其中 suffix
是文件的扩展名。