我有以下代码,我需要使其递归(它不仅重命名该文件夹中的文件,而且还重命名该文件夹中的文件夹等...)
import glob
for file in glob.glob("/Users/shirin/Desktop/Artez/untitled.*"):
print(file)
import glob
import os
from datetime import datetime
current_day = datetime.now().strftime("%Y-%m-%d")
for source_name in glob.glob("/Users/shirin/Desktop/Artez/untitled.*"):
path, fullname = os.path.split(source_name)
basename, ext = os.path.splitext(fullname)
target_name = os.path.join(path, '{}{}'.format(current_day, ext))
os.rename(source_name, target_name)
答案 0 :(得分:0)
我如何在我的代码中实现它?
类似的东西:
import glob
import os
from datetime import datetime
current_day = datetime.now().strftime("%Y-%m-%d")
for root, dirs, files in os.walk("/Users/shirin/Desktop/Artez"):
for f in files:
if not f.startswith("untitled."):
continue
basename, ext = os.path.splitext(fullname)
source_name = os.path.join(root, f)
target_name = os.path.join(root, '{}{}'.format(current_day, ext))
os.rename(source_name, target_name)
答案 1 :(得分:0)
试试这个:
import os
from datetime import datetime
def walk_dir(path):
current_day = datetime.now().strftime("%Y-%m-%d")
for root, dirs, files in os.walk(path):
for filename in files:
current = root + "/" + filename
if os.path.isfile(current):
print "ORIGINAL NAME: " + current
ext = os.path.splitext(filename)[1]
target_name = os.path.join(root, '{}{}'.format(current_day, ext))
print "NEW NAME: " + target_name
os.rename(current, target_name)
walk_dir("/Users/shirin/Desktop/Artez")
我在包含子目录和文件的目录上运行walk_dir()
。仅重命名文件。输出:
>>> walk_dir("dir1")
ORIGINAL NAME: dir1/i_am_a_file_in_dir1.doc
NEW NAME: dir1/2016-03-07.doc
ORIGINAL NAME: dir1/dir2/file_in_dir2_saying_hi
NEW NAME: dir1/dir2/2016-03-07
ORIGINAL NAME: dir1/dir2/dir3/file_nested
NEW NAME: dir1/dir2/dir3/2016-03-07
ORIGINAL NAME: dir1/dir2/dir3/dir3file
NEW NAME: dir1/dir2/dir3/2016-03-07
ORIGINAL NAME: dir1/dir2/another_dir_at_level2/level2_dir2_file.extension
NEW NAME: dir1/dir2/another_dir_at_level2/2016-03-07.extension
答案 2 :(得分:0)
你必须在自己内部调用一个函数才能递归。 一种方法:
import os
from datetime import datetime
current_day = datetime.now().strftime("%Y-%m-%d")
def rename_files(path):
os.chdir(path)
for source_name in next(os.walk('.'))[2]:
path, fullname = os.path.split(source_name)
basename, ext = os.path.splitext(fullname)
target_name = os.path.join(path, '{}{}'.format(current_day, ext))
os.rename(source_name, target_name)
for dir_name in next(os.walk('.'))[1]:
rename_files(dir_name)
os.chdir('..')
rename_files("/Users/shirin/Desktop/Artez")