我在分析Python3.7中的几个CSV文件时有点麻烦。 我将这些文件放在文件夹中,并通过“filedialog.askopenfilename(multiple=True)”指定其路径
此时,我启动了for循环来分析循环中所需的文件,这是脚本的目标。 我能看到的是,这个脚本确实获取了所有的N个文件,但它只对最后一个文件执行了操作。另外,我不想将所有文件连接到DF中:代码在每个文件上都能很好地工作,我只想让执行速度加快,使其只运行一次,而不是十次左右
代码如下:
import csv
import numpy as np
from pylinac.core.profile import SingleProfile
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'auto')
import matplotlib.pyplot as plt
from scipy import interpolate
import matplotlib.patches as patches
import pandas as pd
root = tk.Tk()
root.lift()
root.focus_force()
root.wm_attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',True)
root.withdraw()
read_files = filedialog.askopenfilename(multiple=True)
#csv selection
for files in read_files:
print(files)
ascii_files = os.path.basename(files)
split_filenames = ascii_files.split(".", 1)
field = split_filenames[0]
with open(files, newline='') as f:
reader = csv.reader(f)
list_import = list(reader)
#here start CSV postprocessing ...
#delete the first two rows of cvs file
del list_import[0]
del list_import[0]
df = pd.DataFrame(list_import)
first_column=df.columns[0]
df=df.drop([first_column], axis=1)
unif_map=df.to_numpy(dtype=float)
# analysis continue...
它正在处理所有文件,因为当我要求用print(文件)打印这些文件时,它会打印出文件夹中的所有csv文件名:
C:/trial/depth 23 distal.csv
C:/trial/depth 24 distal.csv
C:/trial/depth 25 distal.csv
C:/trial/depth 26 distal.csv
C:/trial/depth 27 distal.csv
C:/trial/depth 28 distal.csv
C:/trial/depth 29 distal.csv
C:/trial/depth 30 distal.csv
C:/trial/depth 31 distal.csv
但我猜它只分析最后一个文件,实际上它只显示与最后一个文件相关的数字(C:/trial/depth 31 Distactive.csv),当我要求打印分析的csv名称时,我得到了“depth 31 Distactive”,实际上我没有其他文件的输出。 可能我在for循环中遗漏了一些东西,但我无法确定在哪里
非常感谢那些想要帮助的人
安德烈
显然你需要把所有的东西都放到循环中。这里发生的事情是,您遍历了所有文件,循环只保留数据帧创建中的列表导入的最新记录
相关问题 更多 >
编程相关推荐