2017-08-04 38 views
1

我遇到了使用glob,sys,re和os模块的脚本有两个问题。该脚本枚举一个目录并搜索所有文件中的字符串。它运行时,如果我将绝对路径分配给变量,但不执行正则表达式。我需要将脚本更改为使用sys.argv,以便用户可以在终端中指定路径(例如:./replace_students.py /home/alex/Documents/)。当我改变了目录名称变量从"dirname = "/home/alex/Documents/"""dirname = sys.argv[1:]"我得到的错误python glob&sys.argv错误,并且正则表达式不工作

​​3210

我需要与错误的援助和获得正则表达式的工作。

import os, glob, sys, re 

#dirname = "/home/alex/Documents" 
dirname = sys.argv[1:] 
os.listdir(dirname) 

for filename in glob.glob('*'): 
    with open(filename) as f: 
     contents = f.read() 

    if 'students' in contents: 
     contents = contents.replace(r" students", "pupils") 
    print contents 

回答

0

[1:]意味着要从第二的所有项目,直到最后,有效的,而不是让一个字符串,你会得到一个列表(是的,它即使它包含一个项目的列表)。
os.listdir需要一个单一的路径,而不是一个列表

,而不是做:

dirname = sys.argv[1] 
+0

你的解释是可以理解的和有益的。我做了修改并且工作。谢谢! – jmal