如何多次修改python中的一个文件名
How to multiplely modify one piece of the file name in python
新手。我在一个文件夹中有几个 txt 文件。我需要将 'April' 更改为 'APR'.
12 April 2019 Nmae's something Something.txt
13 April 2019 World's - as Countr something.txt
14 April 2019 Name and location.txt
15 APR 2019 Name then location,for something.txt
看起来像这样
12 APR 2019 Nmae's something Something.txt
13 APR 2019 World's - as Countr something.txt
14 APR 2019 Name and location.txt
15 APR 2019 Name then location,for something.txt
以下是类似链接,但每个链接都略有不同。
Python - Replace multiple characters in one file name
我试过这个:
import os
files = os.listdir('/home/runner/Final/foldername')
for f in files:
newname = f.replace('April', 'APR')
os.rename(f, newname)
但是什么都没有改变,我能得到一些指南吗?
问题是 f
只是文件名,而不是完整路径,因此您的命令 os.rename(f, newname)
将重命名当前工作目录中名为 f
的文件,而不是目标目录。此外,您将尝试重命名每个文件,而不仅仅是那些实际更改的文件。
这里有一些更好的东西:
from pathlib import Path
for f in Path('/home/runner/Final/foldername').glob('*'):
if f.is_file():
new_name = f.name.replace('April', 'APR')
if new_name != f.name:
f.rename(Path('/home/runner/Final/foldername') / new_name)
它还会检查找到的东西是否真的是一个文件(否则,它会包含目录,而且您似乎不想重命名这些目录)。
请注意,在 Python 的最新版本中,这也有效:
for f in Path('/home/runner/Final/foldername').glob('*'):
if f.is_file():
if (new_name := f.name.replace('April', 'APR')) != f.name:
f.rename(Path('/home/runner/Final/foldername') / new_name)
并避免不断重建 Path
对象:
folder = Path('/home/runner/Final/foldername')
for f in folder .glob('*'):
if f.is_file():
if (new_name := f.name.replace('April', 'APR')) != f.name:
f.rename(folder / new_name)
新手。我在一个文件夹中有几个 txt 文件。我需要将 'April' 更改为 'APR'.
12 April 2019 Nmae's something Something.txt
13 April 2019 World's - as Countr something.txt
14 April 2019 Name and location.txt
15 APR 2019 Name then location,for something.txt
看起来像这样
12 APR 2019 Nmae's something Something.txt
13 APR 2019 World's - as Countr something.txt
14 APR 2019 Name and location.txt
15 APR 2019 Name then location,for something.txt
以下是类似链接,但每个链接都略有不同。
Python - Replace multiple characters in one file name
我试过这个:
import os
files = os.listdir('/home/runner/Final/foldername')
for f in files:
newname = f.replace('April', 'APR')
os.rename(f, newname)
但是什么都没有改变,我能得到一些指南吗?
问题是 f
只是文件名,而不是完整路径,因此您的命令 os.rename(f, newname)
将重命名当前工作目录中名为 f
的文件,而不是目标目录。此外,您将尝试重命名每个文件,而不仅仅是那些实际更改的文件。
这里有一些更好的东西:
from pathlib import Path
for f in Path('/home/runner/Final/foldername').glob('*'):
if f.is_file():
new_name = f.name.replace('April', 'APR')
if new_name != f.name:
f.rename(Path('/home/runner/Final/foldername') / new_name)
它还会检查找到的东西是否真的是一个文件(否则,它会包含目录,而且您似乎不想重命名这些目录)。
请注意,在 Python 的最新版本中,这也有效:
for f in Path('/home/runner/Final/foldername').glob('*'):
if f.is_file():
if (new_name := f.name.replace('April', 'APR')) != f.name:
f.rename(Path('/home/runner/Final/foldername') / new_name)
并避免不断重建 Path
对象:
folder = Path('/home/runner/Final/foldername')
for f in folder .glob('*'):
if f.is_file():
if (new_name := f.name.replace('April', 'APR')) != f.name:
f.rename(folder / new_name)