[英]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 的内置filter
和lambda
函数:
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.