如何使用ipython在dir中用下划线替换空格?

时间:2014-09-01 10:51:53

标签: python ipython

有时用下划线替换空格很有用。在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脚本一样)。

2 个答案:

答案 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