我的代码获取信息并将其存储在列表中。排序后的列表是:
example/
example/text1.txt
example/text2.txt
example/text3.txt
我想引用text1.txt并对其执行一个功能,然后转到列表中的下一个条目(在本例中为text2.txt)。
我能够看到我用正则表达式可以做的一些事情,但是它什么也没输出。 到目前为止,这是我的一部分代码:
FileNames = name in sorted(zip_file.namelist())
regex = r"[1-9]+ \d"
matches = re.findall(regex, str(FileNames))
for match in matches:
print("%s" % (match))
编辑: 利用另一种技术,这是到目前为止我得到的:
import zipfile
import re
zip_file = zipfile.ZipFile('/example.zip','r')
#zip_file = zipfile.ZipFIle(input("What's the filepath?: "))
for name in sorted(zip_file.namelist()):
#print(name)
for file_path in name:
file_name = file_path.split("/")[-1]
if "1" in file_name:
print(file_name)
else:
print("This line does not contain a valid path to a text file.")
zip_file.close()
它给了我非常可观的总产出,
example/text1.txt
The Line does not contain a valid path to a text file.
^重复了很多次
答案 0 :(得分:0)
由于您要处理路径,因此我不会使用正则表达式,而只会使用简单的split
。对于每一行,您都可以在"/"
之后使用列表的最右边的字符串(如果存在)。如果包含".txt"
是您的文件名,否则忽略该行。
files_paths = ["example/",
"example/text1.txt",
"example/text2.txt",
"example/text3.txt"]
for file_path in files_paths :
file_name = file_path.split("/")[-1]
if ".txt" in file_name:
... # call a function with file_name as an argument.
else:
print("This line does not contain a valid path to a text file.")
print
就在这里进行测试,如果希望脚本保持沉默,请随时删除else
子句。
答案 1 :(得分:0)
假设列表中的每个条目都是您要对其执行某些操作的文件的路径,则可以使用os.path库获取文件路径的基本名称。
import os
path_str = "example/text1.txt"
file_name = os.path.basename(os.path.normpath(path_str))