使用python从文件中删除回车符

2024-04-24 05:31:42 发布

您现在位置:Python中文网/ 问答频道 /正文

import os
import sys

files = os.listdir(sys.argv[1])
for file in files:
    if file[-4:] == ".png":
        os.rename(file, file.replace('\r', ''))

正在使用上面的代码从文件名中删除,但是当我执行时会得到以下错误

Traceback (most recent call last):
  File "renameImages.py", line 9, in <module>
    os.rename(f, f.replace('\r', ''))
OSError: [Errno 2] No such file or directory

我哪里做错了?


Tags: 代码inimportforifpngos文件名
2条回答

可以使用str.rstrip('\r')方法从字符串右侧删除一组字符:

>>> s="this is your brain on drugs\r\n\r\n"
>>> s
'this is your brain on drugs\r\n\r\n'
>>> s=s.rstrip('\n\r ')
>>> s
'this is your brain on drugs'

你在文章中说文件名的末尾有一个\r;这是非常不寻常的。你确定你的文件名在字符串的末尾有一个\r吗?或者你假设它有,因为你用Python打印它?请记住,Python会自动返回打印的字符串。

编辑

好:文件名的末尾确实有一个\r。我的第一个建议是修复产生如此不友好的文件名的脚本。。。

对于这个scpt,您需要将前面的目录名或CD添加到相关目录中。既然THIS答案是前置的,下面是CD'ing:

try:
    os.chdir(sys.argv[1])
except OSError:
    print "can't change to ",sys.argv[1]
    sys.exit(1)

# proceed with the rest of your script... 

您没有告诉它在argv[1]中声明的文件目录 尝试os.rename(sys.argv[1]+"/file",sys.argv[1]+"/"+replace('\r'','') (对于Windows则为“\\”)。

相关问题 更多 >