我试图用Python重命名目录中的一些文件。
假设我有一个名为CHEESE_CHEESE_TYPE的文件。***,并希望删除CHEESE_,因此我的结果文件名将是CHEESE_TYPE
我正在尝试使用os.path.split,但它不能正常工作。我也考虑过使用字符串操作,但也没有成功。
我试图用Python重命名目录中的一些文件。
假设我有一个名为CHEESE_CHEESE_TYPE的文件。***,并希望删除CHEESE_,因此我的结果文件名将是CHEESE_TYPE
我正在尝试使用os.path.split,但它不能正常工作。我也考虑过使用字符串操作,但也没有成功。
当前回答
使用操作系统。Rename (src, dst)重命名或移动文件或目录。
$ ls
cheese_cheese_type.bar cheese_cheese_type.foo
$ python
>>> import os
>>> for filename in os.listdir("."):
... if filename.startswith("cheese_"):
... os.rename(filename, filename[7:])
...
>>>
$ ls
cheese_type.bar cheese_type.foo
其他回答
这类东西非常适合IPython,它具有shell集成。
In [1] files = !ls
In [2] for f in files:
newname = process_filename(f)
mv $f $newname
注意:要将它存储在脚本中,请使用.ipy扩展名,并在所有shell命令前加上!
参见:http://ipython.org/ipython-doc/stable/interactive/shell.html
我有同样的问题,我想在任何pdf文件替换空白到破折号。 但这些文件在多个子目录中。因此,我必须使用os。walk()。 在多个子目录的情况下,它可能是这样的:
import os
for dpath, dnames, fnames in os.walk('/path/to/directory'):
for f in fnames:
os.chdir(dpath)
if f.startswith('cheese_'):
os.rename(f, f.replace('cheese_', ''))
那么这个呢:
import re
p = re.compile(r'_')
p.split(filename, 1) #where filename is CHEESE_CHEESE_TYPE.***
假设您已经在目录中,并且注释中的“前8个字符”始终为真。(虽然“CHEESE_”是7个字符…? 如果是,将下面的8改为7)
from glob import glob
from os import rename
for fname in glob('*.prj'):
rename(fname, fname[8:])
使用操作系统。Rename (src, dst)重命名或移动文件或目录。
$ ls
cheese_cheese_type.bar cheese_cheese_type.foo
$ python
>>> import os
>>> for filename in os.listdir("."):
... if filename.startswith("cheese_"):
... os.rename(filename, filename[7:])
...
>>>
$ ls
cheese_type.bar cheese_type.foo