python3 os.rename()不会在名称中使用单词“ Copy”重命名文件

时间:2019-05-22 21:41:28

标签: python python-3.x

我正在尝试使用python 3.7.3重命名我的一个文件夹中的一堆文件,并且不会重命名其中带有单词“ Copy”的文件。重命名它们后确实重命名了!!

我认为是因为它们中包含空格,连字符或字母,所以我在其他文件的名称中添加了一些名称,但确实重命名了它们。例如:它将重命名:

'10 60'
'54 - 05'
'9200 d' 

但不会重命名:

“ 7527复制”

这是我开始使用的文件名之一,它不会重命名(只是要特别清楚):

'6576348885058201279439757037938886093203209992672224485458953892 - Copy'

这是我的代码:

import os
from random import randint

def how_many_digits(n):
    range_start = 10**(n-1)
    range_end = (10**n)-1
    return randint(range_start, range_end)


directory = os.listdir(os.getcwd())


for i in directory:
    if not "py" in i:   #so it won't rename this file
        os.rename(i, str(how_many_digits(4)) + str(os.path.splitext(i)[1]))


for i in directory:
    print(i)  #why does this print the old names instead of the new ones?!!

编辑:这是我的第一个问题,我不知道自己在做什么,所以请耐心等待

2 个答案:

答案 0 :(得分:12)

由于此检查,它不会使用名称Copy重命名文件:

if not "py" in i:   #so it won't rename this file

如果名称中包含Copy,则名称中包含py

也许你应该拥有

if not i.endswith('.py'):

相反。

如果要更新目录列表,则必须再次致电listdir

directory = os.listdir(os.getcwd()) # get updated contents

for i in directory:
    print(i)  

答案 1 :(得分:3)

您只分配一次directory。您需要通过再次调用listdir对其进行更新。

directory = os.listdir(os.getcwd())


for i in directory:
    if not "py" in i:   #so it won't rename this file
        os.rename(i, str(how_many_digits(4)) + str(os.path.splitext(i)[1]))

updated_directory = os.listdir(os.getcwd()) # NEW

for i in updated_directory:
    print(i)  #why does this print the old names instead of the new ones?!!