import os
import pandas as pd
FILES = os.listdir("/CADEC/original")
for file in FILES:
if file.startswith("ARTHROTEC."):
print(file)
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
...
我想从一个目录下从某些字母开始的所有文件中提取数据。如上所示,当我遍历目录并打印每个符合的文件名时,我得到一列文件名(字符串)。同时,data=pd.read_csv(“/cadec/original/arthrotec.1.ann”,sep='\t',header=none)
工作得非常好。但是,运行以下代码只会返回错误。为什么找不到文件?我该怎么做才能解决这个问题?
for file in FILES:
if file.startswith("ARTHROTEC."):
data = pd.read_csv(file, sep='\t', header=None)
FileNotFoundError: [Errno 2] File ARTHROTEC.1.ann does not exist: 'ARTHROTEC.1.ann'
os.listdir
只返回目录中的文件名,不返回路径,并且pandas
需要文件的路径(或相对路径),除非该文件与代码在同一目录中。pathlib
模块会更好,该模块将路径视为带有方法的对象,而不是字符串。
.glob
-生成与模式匹配的对象的生成器
import pandas as pd
from pathlib import Path
# create the path object and get the files with .glob
files = Path('/CADEC/original').glob('ARTHROTEC*.ann')
# create a list of dataframes, 1 dataframe for each file
df_list = [pd.read_csv(file, sep='\t', header=None) for file in files]
# alternatively, create a dict of dataframes with the filename as the key
df_dict = {file.stem: pd.read_csv(file, sep='\t', header=None) for file in files}
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] on win32
import os
...: from pathlib import Path
...: os.listdir('e:/PythonProjects/stack_overflow/t-files')
Out[2]:
['.ipynb_checkpoints',
'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',
'87505504.txt',
'90950222.txt',
't1.txt',
't2.txt',
't3.txt']
list(Path('e:/PythonProjects/stack_overflow/t-files').glob('*'))
Out[3]:
[WindowsPath('e:/PythonProjects/stack_overflow/t-files/.ipynb_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/87505504.txt'),
WindowsPath('e:/PythonProjects/stack_overflow/t-files/90950222.txt'),
WindowsPath('e:/PythonProjects/stack_overflow/t-files/t1.txt'),
WindowsPath('e:/PythonProjects/stack_overflow/t-files/t2.txt'),
WindowsPath('e:/PythonProjects/stack_overflow/t-files/t3.txt')]
如何仅在目录中迭代文本文件?到目前为止,我所拥有的是; 这是可行的,但是我必须将.py文件存储在同一个目录(文件夹)中才能使其运行,因此迭代包含了.py文件本身。理想情况下,我想指挥的是:; “查看此子目录/文件夹,并循环访问其中的所有文件” 或。。。 我确信我要求的东西相当直截了当,但我不知道如何继续。可能值得我强调的是,我通过反复试验获得了glob模块,因此,如果这是绕过此特定方法的错误方法,
干杯大家, 我需要python 3.6的帮助。所以我有这样的数据结构: 我目前正在主目录所在的目录下工作,所以我不需要在此之前指定路径。首先,我想遍历主目录,找到所有子目录。然后我想在他们每一个人身上找到。wav文件,当处理完这些文件后,我想转到下一个子目录,以此类推,直到它们都被打开。处理wav文件。这正是我想做的。wav文件被输入到我的程序中,处理它们,这样我就可以把它们转换成numpy数组,
问题 你想在一个固定长度记录或者数据块的集合上迭代,而不是在一个文件中一行一行的迭代。 解决方案 通过下面这个小技巧使用 iter 和 functools.partial() 函数: from functools import partial RECORD_SIZE = 32 with open('somefile.data', 'rb') as f: records = iter(p
修改定时清理 /tmp 目录下的文件 初衷 默认系统是超过 30 天不访问的文件自动清除的,但是有时候硬盘用得紧可以考虑修改周期 设置方法 编辑配置文件:vim /etc/cron.daily/tmpwatch #! /bin/sh flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
本文向大家介绍Java删除文件、目录及目录下所有文件的方法实例,包括了Java删除文件、目录及目录下所有文件的方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要实现的功能是删除某个目录及目录下的所有子目录和文件,涉及到的知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除。 具体代码示例如下: 总结 以上就是这篇