抱歉,作为一种语言,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
但问题是需要添加目录,系统需要知道在此之前打印了哪个文件及其内容。
很抱歉,如果这令人困惑。
帮助表示赞赏。
答案 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
并且系统需要知道在它之前打印了哪个文件及其内容。
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
添加了自己的换行符,并且您不希望文件的每一行之间都有空行。)
这样做的好处是您不必将整个文件读入内存即可将其打印出来。如果你正在研究微小的文件,那就不是什么大问题了,但它对更大的文件产生了巨大的影响。