以特定格式重命名 python 的文件
Renaming files with python in specific format
我正在尝试重命名一个文件夹中的文件,格式为 0001、0002、0010、0100 等。我对 python 非常陌生,很抱歉问了这么基础的问题。
我四处搜索,我遇到的大部分代码都会重命名文件(不是我想要的)或删除某些字符。我还遇到过使用额外模块 (glob) 的代码,这只会让我陷入困境。我看到的大部分内容都让我头晕目眩;目前我的技能不会超出简单的函数,if、when、for、while 语句等等。
我拼凑了一些我(有点)理解的代码,但它不起作用。
import os
dir = os.listdir("D:\temp\Wallpapers")
i = 0
for item in dir:
dst ="000" + str(i) + ".jpg"
src = item
dst = item + dst
# rename() function will
# rename all the files
os.rename(src, dst)
i += 1
这是我得到的错误:
Traceback (most recent call last):
File "rename.py", line 14, in <module>
os.rename(src, dst)
FileNotFoundError: [WinError 2] The system cannot find the file specified: '00-Pyatna.jpg' -> '0000.jpg'
首先,您可以使用以下函数检索文件夹中已存在的最大数量
import re
def max_counter_in_files(folder):
files = os.listdir(folder)
maxnum = '0'
if files:
maxnum = max([max(re.findall("[\d]+", file)) for file in files])
return maxnum
例如,如果您的文件夹包含文件
file001.txt
file002.txt
file003.txt
然后 max_counter_in_files('path/to/your/files')
会 return 3
。
其次,您可以使用该功能在添加新文件时增加下一个文件名。例如,
counter = int(self.max_counter_in_files(dest_path))
filename = f"filename{counter+1:04d}.txt"
filename
将是 "filename0004.txt"
.
它不起作用,因为您可能不在正确的目录中,而您正试图在您现在所在的目录中查找这些文件。你应该使用绝对路径来做到这一点。看下面代码
import os
base_path = "D:/temp/Wallpapers"
files = os.listdir(base_path)
for i, fp in enumerate(files):
dst = os.path.join(base_path, "{0:04d}.jpg".format(i))
src = os.path.join(base_path, fp)
os.rename(src, dst)
我正在尝试重命名一个文件夹中的文件,格式为 0001、0002、0010、0100 等。我对 python 非常陌生,很抱歉问了这么基础的问题。
我四处搜索,我遇到的大部分代码都会重命名文件(不是我想要的)或删除某些字符。我还遇到过使用额外模块 (glob) 的代码,这只会让我陷入困境。我看到的大部分内容都让我头晕目眩;目前我的技能不会超出简单的函数,if、when、for、while 语句等等。
我拼凑了一些我(有点)理解的代码,但它不起作用。
import os
dir = os.listdir("D:\temp\Wallpapers")
i = 0
for item in dir:
dst ="000" + str(i) + ".jpg"
src = item
dst = item + dst
# rename() function will
# rename all the files
os.rename(src, dst)
i += 1
这是我得到的错误:
Traceback (most recent call last):
File "rename.py", line 14, in <module>
os.rename(src, dst)
FileNotFoundError: [WinError 2] The system cannot find the file specified: '00-Pyatna.jpg' -> '0000.jpg'
首先,您可以使用以下函数检索文件夹中已存在的最大数量
import re
def max_counter_in_files(folder):
files = os.listdir(folder)
maxnum = '0'
if files:
maxnum = max([max(re.findall("[\d]+", file)) for file in files])
return maxnum
例如,如果您的文件夹包含文件
file001.txt
file002.txt
file003.txt
然后 max_counter_in_files('path/to/your/files')
会 return 3
。
其次,您可以使用该功能在添加新文件时增加下一个文件名。例如,
counter = int(self.max_counter_in_files(dest_path))
filename = f"filename{counter+1:04d}.txt"
filename
将是 "filename0004.txt"
.
它不起作用,因为您可能不在正确的目录中,而您正试图在您现在所在的目录中查找这些文件。你应该使用绝对路径来做到这一点。看下面代码
import os
base_path = "D:/temp/Wallpapers"
files = os.listdir(base_path)
for i, fp in enumerate(files):
dst = os.path.join(base_path, "{0:04d}.jpg".format(i))
src = os.path.join(base_path, fp)
os.rename(src, dst)