按顺序读取和写入文件 - Python

时间:2013-09-20 00:09:24

标签: python

抱歉,作为一种语言,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

但问题是需要添加目录,系统需要知道在此之前打印了哪个文件及其内容。

很抱歉,如果这令人困惑。

帮助表示赞赏。

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)

希望这有帮助。

答案 2 :(得分:0)

  

但问题是需要添加目录......

为此,请使用os.path中的方法。

您可以pwd = os.getcwd()获取当前工作目录(glob('*.txt')正在搜索的目录),然后是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添加了自己的换行符,并且您不希望文件的每一行之间都有空行。)

这样做的好处是您不必将整个文件读入内存即可将其打印出来。如果你正在研究微小的文件,那就不是什么大问题了,但它对更大的文件产生了巨大的影响。