[英]How to access all the sub folders name and contained files of the same subfolders and make a XLSX or CSV file?
[英]How to rename all specific filetypes of files within subfolders to name with same file extension but same file name
我在子文件夹中有 690 个文件 - 子文件夹名称需要保持不变,但每个子文件夹中的 .iso 文件需要重命名为 game.iso - 这是可能的,因为每个 ISO 都在自己的文件夹中(文件夹名称不能更改)
我目前正在自学 Python3,但我真的很挣扎。
任何帮助表示赞赏。 干杯。
“较新”的pathlib 模块在这里很有帮助。
递归 glob 可以按扩展名匹配所有文件名。
>>> from pathlib import Path
>>> for p in Path().rglob('*.iso'):
... print(p)
a/b/2.iso
a/b/c/d/3.iso
a/b/c/d/e/1.iso
扩展之前的部分在 pathlib 术语中称为stem
- 您可以使用.with_stem()
修改它
>>> for p in Path().rglob('*.iso'):
... print(p.with_stem('game'))
a/b/game.iso
a/b/c/d/game.iso
a/b/c/d/e/game.iso
您可以将其直接传递给.rename()
方法
for p in Path().rglob('*.iso'):
p.rename(p.with_stem('game'))
这将重命名所有文件:
>>> for p in Path().rglob('*.iso'):
... print(p)
a/b/game.iso
a/b/c/d/game.iso
a/b/c/d/e/game.iso
这是实现此目的的脚本。 它以递归方式执行,您可以通过提供要开始工作的根目录来运行它。 例如,我将脚本保存为 iso_rename: ./iso_rename <enter full path to start lookin for.iso files>
#!/usr/local/bin/python3
import os, sys
dir = sys.argv[1]
def rename_iso(dir):
items = os.scandir(dir)
for item in items:
if item.is_file() and item.name.endswith('.iso'):
if item.name == 'game.iso':
continue
os.rename(item.path, os.path.join(dir, 'game.iso'))
elif item.is_dir():
rename_iso(item.path)
rename_iso(dir)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.