python glob&sys.argv错误,并且正则表达式不工作
问题描述:
我遇到了使用glob,sys,re和os模块的脚本有两个问题。该脚本枚举一个目录并搜索所有文件中的字符串。它运行时,如果我将绝对路径分配给变量,但不执行正则表达式。我需要将脚本更改为使用sys.argv,以便用户可以在终端中指定路径(例如:./replace_students.py /home/alex/Documents/
)。当我改变了目录名称变量从"dirname = "/home/alex/Documents/""
到"dirname = sys.argv[1:]"
我得到的错误python glob&sys.argv错误,并且正则表达式不工作
我需要与错误的援助和获得正则表达式的工作。
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
答
[1:]
意味着要从第二的所有项目,直到最后,有效的,而不是让一个字符串,你会得到一个列表(是的,它即使它包含一个项目的列表)。 os.listdir
需要一个单一的路径,而不是一个列表
,而不是做:
dirname = sys.argv[1]
你的解释是可以理解的和有益的。我做了修改并且工作。谢谢! – jmal