1

抱歉,python 作为一种语言很新。

所以我有5个文件可以说。item1.txt、item2.txt、item3.txt、item4.txt 和 item5.txt。我试图调用目录,以便它挑选出第一个文件(item1.txt)并打印其内容,然后当我再次调用该函数(item2.txt)并打印文件中的内容时......然后是(item3.txt),然后是(item4.txt)。

顺序很重要,系统必须知道打印了什么文件,以便行中的下一个文件可以在第一个文件之后打印,例如。item1.txt 的内容首先打印,然后是 item2.txt。

尝试使用:

for infile in sorted(glob.glob('*.txt')):
    print "Current File Being Processed is: " + infile

但问题是需要添加目录并且系统需要知道在它之前打印了什么文件及其内容。

对不起,如果这令人困惑。

帮助表示赞赏。

4

3 回答 3

0

如果您需要知道完整路径,可以使用 os.path.join。

例如,搜索当前目录中所有文件的脚本如下所示:

import os
import os.path
import re


# look for all files in current working directory, including subdirs
for (root, folders, files) in os.walk(os.getcwd()):    
    for file in files:
        fullpath = os.path.join(root, file)
        print(fullpath)

希望这可以帮助。

于 2013-09-20T01:13:00.730 回答
0

这是你搜索的吗?

import glob
path = "path/to/your/txt/files/"
for infile in sorted(glob.glob(path + '*.txt')):
    print("Current File Being Processed is: " + path + infile)
于 2013-09-20T00:36:22.857 回答
0

但问题是需要添加目录……</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添加了自己的换行符,并且您不希望文件的每一行之间有一个空行。)

这样做的好处是您不必将整个文件读入内存即可将其打印出来。如果您正在处理小文件,这没什么大不了的,但是对于更大的文件,它会有很大的不同。

于 2013-09-20T01:45:10.397 回答