[英]How to sequentially read all the files in a directory and export the contents in Python?
我有一個目錄/directory/some_directory/
,在該目錄中有一組文件。 這些文件以以下格式命名:例如, <letter>-<number>_<date>-<time>_<dataidentifier>.log
:
ABC1-123_20162005-171738_somestring.log
DE-456_20162005-171738_somestring.log
ABC1-123_20162005-153416_somestring.log
FG-1098_20162005-171738_somestring.log
ABC1-123_20162005-031738_somestring.log
DE-456_20162005-171738_somestring.log
我想讀取這些文件的子集(例如,僅讀取名為ABC1-123*.log
文件),並將其所有內容導出到單個csv文件(例如, output.csv
),即將從單個文件中收集所有數據的CSV文件。
到目前為止,我已經編寫了以下代碼:
#!/usr/bin/env python
import os
file_directory=os.getcwd()
m_class="ABC1"
m_id="123"
device=m_class+"-"+m_id
for data_file in sorted(os.listdir(file_dir)):
if str(device)+"*" in os.listdir(file_dir):
print data_file
我不知道如何僅讀取過濾文件的子集,也不知道如何將其導出到常見的csv文件。
我該如何實現?
根據您當前的代碼片段,可以更好地陳述您的問題,我假設您要:
output.csv
的文件中。 在python中,您可以使用glob
列出文件名來實現(1.)。
import glob
for filename in glob.glob('foo*bar'):
print filename
這將打印當前目錄中所有以foo
開頭和以bar
結尾的文件。
對於(2.),您只需使用python的內置函數open()
讀取文件並將其內容寫入所需的輸出即可:
open('filename', 'r')
(使用'r'
作為您要求python打開文件進行“讀取”的模式,使用'w'
您要求python打開文件進行“寫入”。)
最終代碼如下所示:
import glob
import sys
device = 'ABC1-123'
with open('output.csv', 'w') as output:
for filename in glob.glob(device+'*'):
with open(filename, 'r') as input:
output.write(input.read())
您可以使用os
模塊列出文件。
import os
files = os.listdir(os.getcwd())
m_class = "ABC1"
m_id = "123"
device = m_class + "-" + m_id
file_extension = ".log"
# filter the files by their extension and the starting name
files = [x for x in files if x.startswith(device) and x.endswith(file_extension)]
f = open("output.csv", "a")
for file in files:
with open(file, "r") as data_file:
f.write(data_file.read())
f.write(",\n")
f.close()
只有幾處調整,您已經接近
filesFromDir = os.listdir(os.getcwd())
fileList = [file for file in filesFromDir if file.startswith(device)]
f = open("LogOutput.csv", "ab")
for file in fileList:
#print "Processing", file
with open(file, "rb") as log_file:
txt = log_file.read()
f.write(txt)
f.write("\n")
f.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.