首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python3 os.rename()不会重命名名称中包含单词'Copy‘的文件

python3 os.rename()不会重命名名称中包含单词'Copy‘的文件
EN

Stack Overflow用户
提问于 2019-05-23 05:41:28
回答 2查看 283关注 0票数 7

我正在尝试使用python 3.7.3重命名我的一个文件夹中的一堆文件,但它不会重命名其中包含单词"Copy“的文件。它还会打印重命名后重命名的旧文件名!!

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

代码语言:javascript
复制
'10 60'
'54 - 05'
'9200 d' 

但它不会重命名:

'7527副本‘

这是我开始使用的一个文件名,它不会重命名(只是为了更清楚):

代码语言:javascript
复制
'6576348885058201279439757037938886093203209992672224485458953892 - Copy'

下面是我的代码:

代码语言:javascript
复制
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?!!

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

EN

回答 2

Stack Overflow用户

发布于 2019-05-23 05:55:56

由于以下检查,它不会重命名名称中包含Copy的文件:

代码语言:javascript
复制
if not "py" in i:   #so it won't rename this file

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

也许你应该

代码语言:javascript
复制
if not i.endswith('.py'):

而不是。

如果您想要更新的目录列表,则必须再次调用listdir

代码语言:javascript
复制
directory = os.listdir(os.getcwd()) # get updated contents

for i in directory:
    print(i)  
票数 12
EN

Stack Overflow用户

发布于 2019-05-23 05:52:46

您只需分配一次directory。您需要通过再次调用listdir来更新它。

代码语言:javascript
复制
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?!!
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56265401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档