但问题是需要添加目录……</p>
为此,请使用 中的方法os.path
。
您可以pwd = os.getcwd()
获取当前工作目录(glob('*.txt')
正在搜索的同一目录),然后获取 us os.path.join(pwd, infile)
。但是对于特殊情况,当您只有一个相对于当前目录的路径时,您可能想要的是os.path.abspath
. 所以:
for infile in sorted(glob.glob('*.txt')):
inpath = os.path.abspath(infile)
print "Current File Being Processed is: " + inpath
并且系统需要知道在它之前打印了什么文件及其内容。
要获取文件的内容,您必须先获取open
它,然后再read
从中获取,如下所示:
for infile in sorted(glob.glob('*.txt')):
inpath = os.path.abspath(infile)
print "Current File Being Processed is: " + inpath
with open(inpath) as infileobj:
contents = infileobj.read()
print contents
通常,您并不真的想将整个文件读入一个大字符串,您只想对文件中的每一行做一些工作。为此,您可以只使用一条for
语句,就像处理从 中返回的字符串列表一样sorted
,将文件视为一堆行:
for infile in sorted(glob.glob('*.txt')):
inpath = os.path.abspath(infile)
print "Current File Being Processed is: " + inpath
with open(inpath) as infileobj:
for line in infileobj:
print line.rstrip('\n')
(这rstrip('\n')
是因为每一行都以换行符结尾,但print
添加了自己的换行符,并且您不希望文件的每一行之间有一个空行。)
这样做的好处是您不必将整个文件读入内存即可将其打印出来。如果您正在处理小文件,这没什么大不了的,但是对于更大的文件,它会有很大的不同。