有时用下划线替换空格很有用。在linux机器上,这对我来说很好用:
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
在Windows上,我想用ipython来做。我想很多人可能遇到过这个问题,你如何在ipython中实现它?
谢谢!
编辑: 我为这个误会道歉。这是我的剧本:
import os
def rm_space():
for filename in os.listdir("."):
if filename.find(" ") > 0:
newfilename = filename.replace(" ", "_")
os.rename(filename, newfilename)
这段代码确实用空格替换空格;但是,有一个问题:如何替代递归?
我认为这是一个非常常见的问题,可能已经有一种惯用的方法来解决它,(就像上面的shell脚本一样)。
答案 0 :(得分:1)
来自stackoverflow和编辑的代码复制,适用于我的Mac。
import os
import sys
directory = sys.argv[1] # parse through file list in the current directory
for filename in os.listdir(directory): # parse through file list in the current directory
if filename.find(" ") > 0: # if an space is found
newfilename = filename.replace(" ","_") # convert underscores to space's
old_file_path = os.path.join(directory, filename)
new_file_path = os.path.join(directory, newfilename)
os.rename(old_file_path, new_file_path) # rename the file, note that arg[] of os.rename is path_of_file, that explains 2 lines of code above
答案 1 :(得分:0)
如何递归替换?
使用OS.walk()而不是listdir