Python FileNotFound迭代目录下的文件时出错 导入操作系统 作为pd进口熊猫 FILES=os.listdir(“/CADEC/original”) 对于文件中的文件: 如果文件.startswith(“ARTHROTEC”): 打印(文件)

Python FileNotFound迭代目录下的文件时出错 导入操作系统 作为pd进口熊猫 FILES=os.listdir(“/CADEC/original”) 对于文件中的文件: 如果文件.startswith(“ARTHROTEC”): 打印(文件),python,pandas,directory,pathlib,Python,Pandas,Directory,Pathlib,我想从目录下以某些字母开头的所有文件中提取数据。如上所示,当我遍历目录并打印每个适合的文件名时,我会得到一列文件名(字符串)。同时,data=pd.read\u csv(“/CADEC/original/ARTHROTEC.1.ann”,sep='\t',header=None)。但是,运行以下代码只会返回错误。为什么找不到该文件?我该怎么做才能解决这个问题 对于文件中的文件: 如果文件.startswith(“ARTHROTEC”): data=pd.read\u csv(文件,sep='\t

我想从目录下以某些字母开头的所有文件中提取数据。如上所示,当我遍历目录并打印每个适合的文件名时,我会得到一列文件名(字符串)。同时,
data=pd.read\u csv(“/CADEC/original/ARTHROTEC.1.ann”,sep='\t',header=None)
。但是,运行以下代码只会返回错误。为什么找不到该文件?我该怎么做才能解决这个问题

对于文件中的文件:
如果文件.startswith(“ARTHROTEC”):
data=pd.read\u csv(文件,sep='\t',header=None)
  • 仅返回目录中的文件名,不返回路径,
    pandas
    需要文件的路径(或相对路径),除非文件与代码位于同一目录中
  • 您最好学习这个模块,它使用方法而不是字符串将路径视为对象。
    • -生成与模式匹配的对象的
      生成器
  • pathlib
    可能需要一些时间才能习惯,但所有提取路径特定部分的方法(如文件扩展名或文件名)都是值得的
将熊猫作为pd导入
从pathlib导入路径
#创建path对象并使用.glob获取文件
files=Path('/CADEC/original').glob('ARTHROTEC*.ann'))
#创建数据帧列表,每个文件1个数据帧
df_list=[pd.read_csv(文件,sep='\t',header=None)用于文件中的文件]
#或者,创建一个以文件名为键的数据帧dict
df_dict={file.stem:pd.read_csv(file,sep='\t',header=None)用于文件中的文件}
例子 win32上的Python 3.8.5(默认值,2020年9月3日21:29:08)[MSC v.1916 64位(AMD64)] 导入操作系统 …:从pathlib导入路径 …:os.listdir('e:/PythonProjects/stack\u overflow/t-files')) 出[2]: ['.ipynb_检查点', “03900169.txt”, “142233.0.txt”, “153431.2.txt”, “17371271.txt”, “274301.5.txt”, “42010316.txt”, “429237.7.txt”, “570651.4.txt”, “65500027.txt”, “688599.3.txt”, “740103.5.txt”, “742537.6.txt”, “8750504.txt”, “90950222.txt”, “t1.txt”, “t2.txt”, 't3.txt'] 列表(路径('e:/PythonProjects/stack_overflow/t-files').glob('*')) 出[3]: [WindowsPath('e:/PythonProjects/stack\u overflow/t-files/.ipynb\u checkpoints'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/03900169.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/142233.0.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/153431.2.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/17371271.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/274301.5.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/42010316.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/429237.7.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/570651.4.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/65500027.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/688599.3.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/740103.5.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/742537.6.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/8750504.txt'), WindowsPath('e:/PythonProjects/stack_overflow/t-files/90950222.txt'), WindowsPath('e:/PythonProjects/stack\u overflow/t-files/t1.txt'), WindowsPath('e:/PythonProjects/stack\u overflow/t-files/t2.txt'), WindowsPath('e:/PythonProjects/stack\u overflow/t-files/t3.txt')]
哇,这太完美了!谢谢大家!@不客气。
ARTHROTEC.1.ann
ARTHROTEC.10.ann
ARTHROTEC.100.ann
ARTHROTEC.101.ann
ARTHROTEC.102.ann
ARTHROTEC.103.ann
ARTHROTEC.104.ann
ARTHROTEC.105.ann
ARTHROTEC.106.ann
ARTHROTEC.107.ann
ARTHROTEC.108.ann
ARTHROTEC.109.ann
ARTHROTEC.11.ann
ARTHROTEC.110.ann
ARTHROTEC.111.ann
ARTHROTEC.112.ann
ARTHROTEC.113.ann
ARTHROTEC.114.ann
ARTHROTEC.115.ann
...
FileNotFoundError: [Errno 2] File ARTHROTEC.1.ann does not exist: 'ARTHROTEC.1.ann'