Strip file names from files and open recursively? Saving previous strings? - PYTHON
我有一个问题,关于在.txt里阅读和从里面提取字符串,以便以后在代码中使用。
如果我有一个名为"file0.txt"的文件,它包含:
1 2 | file1.txt file2.txt |
其余文件要么包含更多的字符串文件名,要么为空。
如何保存这两个字符串供以后使用。我试图做的是:
1 2 3 4 | infile = open(file, 'r') line = infile.readline() line.split(' ') |
但结果是:
1 | ['file1.txt', ''] |
我知道readline只读取一行,但我认为通过使用返回键将其拆分,它还可以获取下一个文件字符串。
我试图模拟一个文件树或显示哪些文件连接在一起,但现在它只通过每个.txt文件中的第一个文件字符串。
目前我的输出是:
1 2 3 | File 1 crawled. File 3 crawled. Dead end reached. |
我的希望是,它不只是递归地爬行第一个文件,而是通过整个网络,但这又回到了我的问题,即首先不给程序第二个文件名。
我并不是要求一个具体的答案,而是向正确的方向推进,以更好地处理文件中的字符串,并能够存储这两个字符串而不是1。
我目前的代码很难看,但希望它能让我理解这个想法,我会把它贴出来,以参考我正在努力实现的目标。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | def crawl(file): infile = open(file, 'r') line = infile.readline() print(line.split(' ')) if 'file1.txt' in line: print('File 1 crawled.') return crawl('file1.txt') if 'file2.txt' in line: print('File 2 crawled.') return crawl('file2.txt') if 'file3.txt' in line: print('File 3 crawled.') return crawl('file3.txt') if 'file4.txt' in line: print('File 4 crawled.') return crawl('file4.txt') if 'file5.txt' in line: print('File 5 crawled.') return crawl('file5.txt') #etc...etc... else: print('Dead end reached.') |
在功能之外:
1 2 | file = 'file0.txt' crawl(file) |
使用
1 2 3 | infile = open(file, 'r') lines = infile.readlines() print list(lines) |
给予
1 2 3 | ['file1.txt ', 'file2.txt '] |
或
1 2 3 4 | infile = open(file, 'r') lines = infile.read() print list(lines.split(' ')) |
给予
1 | ['file1.txt', 'file2.txt'] |
将
以下是你应该阅读的教程
readline只从文件中获取一行,因此在文件末尾有一个换行符。您需要的是
')