输入:我想将递增的数字添加到按日期排序的目录中的文件名中。例如,在下面添加"01_","02_","03_"...to这些文件。
test1.txt (oldest text file)
test2.txt
test3.txt
test4.txt (newest text file)
这是到目前为止的代码。我可以得到文件名,但文件名中的每个字符似乎都是列表中它自己的项。
import os
for file in os.listdir("/Users/Admin/Documents/Test"):
if file.endswith(".txt"):
print(file)
预期结果为:
01_test1.txt
02_test2.txt
03_test3.txt
04_test4.txt
test1是最旧的,而Test4是最新的。
如何在每个文件名中添加01_、02_、03_、04_?
我试过这样的东西。但它会为文件名中的每个字符添加一个'01_‘。
new_test_names = ['01_'.format(i) for i in file]
print (new_test_names)
发布于 2017-08-08 08:19:55
最简单的方法是简单地使用一个变量,比如i
,它将保存数字,并使用某种类型的formatting将其添加到字符串之前,以保证它至少有两位数:
import os
i = 1
for file in os.listdir("/Users/Admin/Documents/Test"):
if file.endswith(".txt"):
print('%02d_%s' % (i, file)) # %02d means your number will have at least 2 digits
i += 1
发布于 2017-08-08 08:21:05
test_dir = '/Users/Admin/Documents/Test'
txt_files = [file
for file in os.listdir(test_dir)
if file.endswith('.txt')]
numbered_files = ['%02d_%s' % (i + 1, file)
for i, file in enumerate(txt_files)]
发布于 2017-08-08 08:23:30
两种格式化带有前导零的整数的方法。
1.使用.format
import os
i = 1
for file in os.listdir("/Users/Admin/Documents/Test"):
if file.endswith(".txt"):
print('{0:02d}'.format(i) + '_' + file)
i+=1
2.使用.zfill
import os
i = 1
for file in os.listdir("/Users/Admin/Documents/Test"):
if file.endswith(".txt"):
print(str(i).zfill(2) + '_' + file)
i+=1
https://stackoverflow.com/questions/45557412
复制相似问题