所以我需要处理的数据是一组10个.csv文件,每个文件都有以下格式的名称:
Example_datatype_date_IDnumber.csv
10个文件中的每一个都需要不同的操作/分析,我想用一个python脚本完成所有操作。我可以用pandas成功做到这一点,但问题是每次我得到一个新的设置时我必须进入并在导入文件时手动更改文件名中的日期和ID号。有没有办法导入文件并忽略日期和ID号(仅根据数据类型区分)?我只想为每组10创建一个新的文件夹/目录。
答案 0 :(得分:1)
如果您将所有文件放在一个文件夹中(假设为c:\ tmp),则可以使用正则表达式和glob
来查找所有文件:
import glob
path = r"c:\\tmp\\*.csv"
for filePath in glob.glob(path):
# read file and analysis file
或
import re
import os
pattern = r'\w+_\w+_\w+_\w+\.csv'
for i in os.listdir("c:\\tmp\\"):
if re.search(pattern,i):
# read file and analysis file
答案 1 :(得分:0)
您可以使用正则表达式从文件名中检测数据类型:
import os, re
files = os.listdir("my_directory")
for fname in files:
m = re.search('[^_]+_([^_]+).*\csv', fname)
if m:
datatype = m.group(1)
print fname
print datatype
答案 2 :(得分:0)
import os, re
path_containing_csv_files = '/tmp/test' #contains < example_int_12-12-16_1.csv, example_string_11-12-16_2.csv>
def process_int(filepath):
#process int data here
pass
def process_string(filepath):
#process string data here
pass
methods = {'int':process_int,
'string':process_string}
for file_name in os.listdir(path_containing_csv_files):
parsed = re.search('[^_]+_([^_]+).*\csv', file_name))
if parsed:
methods[parsed.group(1)](os.path.join(path_containing_csv_files, file_name))