繁体   English   中英

Python txt文件操作

[英]Python txt file operation

我有一个包含文件的文件夹,并希望将文件分隔为两个变量。

例如这些是文件:

EXfileone.txt
fileone.txt
EXtest.txt
simple.txt

现在我不能做的是(在伪代码中):

If "EX" in filename:
    add file to variable: EXFILES

IF "EX" not in filename:
    add file to variable : NORMALFILES

所以现在:

EXFILES = [EXFfileone.txt, EXtest.txt]
NORMALFILES = [fileone.txt, simple.txt]

然后我将使用 for 循环对文件进行操作:

for file in EXFILES:
    ...

我正在使用 Python 3。

您可以简单地使用标准库glob模块来匹配路径名:

import glob


EXFILES = []
NORMALFILES = []

filename_list = glob.glob("*.txt")

for filename in filename_list:
    if "EX" in filename:
        EXFILES.append(filename)
    else:
        NORMALFILES.append(filename)

尝试这个:

from pathlib import Path

folder = Path('/path/to/your/folder')

exfiles = list(folder.glob('EX*.txt'))
normalfiles = [f for f in folder.glob('*.txt') if not f.name.startswith('EX')]

这将为您提供所需的文件列表。

但最好做这样的事情:

from pathlib import Path

folder = Path('/path/to/your/folder')

for f in folder.glob('*.txt'):
    if f.name.startswith('EX'):
       # do something with your EX*.txt file
    else:
       # do something with your normal file

我希望它有帮助。

您可以使每个变量成为一个列表并将文件的名称存储在其中:

from os import listdir
from os.path import isfile, join

folder_path = '/home/youruser/example' # path to folder

# classify files
exfiles = []
normalfiles= []

for f in listdir(folder_path):
    if isfile(join(folder_path, f)):
        if f.startswith('EX'):
            exfiles.append(join(folder_path, f))
        else:
            normalfiles.append(join(folder_path, f))

for fname in exfiles:
    with open(fname) as f:
        # do operations

使用in运算符。 它检查字符串是否包含子字符串:

from os import listdir

EX_files = []
NORMAL_files = []

for file_name in listdir(): 
    if "EX" in file_name:
        EX_files.append(file_name)
    else:
        NORMAL_files.append(file_name)

您还可以使用 Python 的内置filterlambda函数:

import os

my_list = list(filter(lambda x: 'EX' in x, os.listdir(some_dir)))
my_other_list = list(filter(lambda x: 'EX' not in x, os.listdir(some_dir)))

将输出使用您的搜索条件过滤的两个列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM