我有csv文件中的其他文件,未压缩或压缩的gz,bz2,或其他格式。所有压缩文件的原始扩展名都保留在其名称中。因此特定于压缩的扩展名被附加到原始文件名。 可能的压缩格式列表通过列表给出,例如:
z_types = [ '.gz', '.bz2' ] # could be many more than two types
我想列一个cvs文件的清单,不管它们是否被压缩。我通常对未压缩的csv文件执行以下操作:
import os
[ file_ if file_.endswith('.csv') for file_ in os.listdir(path_to_files) ]
如果我想要压缩文件,我会:
import os
acsv_files_ = []
for file_ in os.listdir(path_to_files):
for ztype_ in z_types + [ '' ]:
if file_.endswith('.csv' + ztype_):
acsv_files_.append(file_)
尽管这样做可行,但有没有更简洁有效的方法呢?例如,在.endswith()中使用“or”运算符
是的,那是可能的。见^{} :
所以你可以用
您可以在一行中这样做:
分解:
编辑
对于更一般的解决方案:
当然,您可以用您希望对文件执行的任何测试来替换
validate_file
中的代码。您甚至可以使用这种方法来验证文件内容如果文件名都以“.csv”或“.csv.some\u compressed\u ext”结尾,则可以使用以下选项:
相关问题 更多 >
编程相关推荐