【问题标题】:Conditional file reading in pythonpython中的条件文件读取
【发布时间】:2020-08-18 03:49:06
【问题描述】:

假设有一组CSV文件,即A.csv、B.csv、C.csv…………Z.csv

'A.csv'
'B.csv'
'C.csv'
'D.csv'
....
'X.csv'
'Y.csv'
'Z.csv' 

如果创建了元音和辅音列表,即 A.csv、E.csv、I.csv、O.csv、U.csv 在列表中作为元音列出,如下所示:

VOWELS = ['A.csv','E.csv','I.csv','O.csv','U.csv'] 

文件被读取为:

file_path = r"C:\Users\Desktop\Data"
read_files = glob.glob(file_path,"*.csv") 

当其他人被列在一个称为辅音的列表中时,我们如何从主目录导入元音列表中列出的文件?我正在使用以下代码,但没有输出,甚至没有错误。可能出了什么问题?

for i in range(len(VOWELS)):
        #print (VOWELS[i])
    for file in read_files:
        if fnmatch.fnmatch(file, VOWELS[i]):
            print(file)

【问题讨论】:

  • 为了调试,在条件之前打印出fileVOWELS[i],这样就可以直接比较差异了。什么都没有打印的原因是因为从未输入条件块,这意味着这些值不匹配。
  • 谢谢。打印时,我看到来自 VOWELS[i] 的输出,但下一个 for 循环似乎是问题所在。当我打印file 时,什么都没有打印出来。可能是什么原因?
  • 是的 - 如果 fileNone,则您对 glob.glob 的调用无法正常运行,因此请追溯您的步骤,看看有什么问题。

标签: python list file csv


【解决方案1】:

这样的事情会奏效。文件的结尾将在您的元音列表中。

import glob

file_path = r"C://test//"
read_files = glob.glob(file_path + "*.csv")

VOWELS = ['A.csv','E.csv','I.csv','O.csv','U.csv']

for file in read_files:
    for vowel in VOWELS:
        if file.endswith(vowel):
             print(file)

【讨论】:

    【解决方案2】:

    试试这个

    import glob
    
    VOWELS = ["A.csv", "E.csv", "I.csv", "O.csv", "U.csv"]
    
    
    file_path = r"C:\Users\Desktop\Data\%s"
    
    
    for lookup_file in glob.glob(file_path % "*.csv"):
        if lookup_file.rsplit("\\", 1)[1] in VOWELS:
            print(i)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2011-01-12
      • 2018-03-04
      相关资源
      最近更新 更多