【问题标题】:FileNotFoundError:文件未找到错误:
【发布时间】:2019-05-30 10:23:48
【问题描述】:

一个文件夹中有很多 csv excel 表。所有 excel 表仅包含前 3 列中的数据。我会从很多csv表中选择对应的csv表,然后画出来。这里是代码

import os
path = "F:\\Users\\Desktop\\Data\\Summary"
files = []
folder_data = os.listdir(path)
folder_data = [i+"\\" for i in folder_data]

# r=root, d=directories, f = files
for r, d, f in os.walk(path):
    for file in f:
        if '.csv' in file:
            files.append(file)
for i, f in enumerate(files):
    print(( i,f))
    print('\n'.join(f'{i}-{v}' for i,v in enumerate(files)))
    csv_code = str(int(input("Enter corresponding code to plot: ")))
    csv_path = path + "\\" + folder_data[csv_code] 

    df = pd.read_csv(csv_path, header=None)
    df1 = df.iloc[:,0:2]
    plt.plot(df1[0], df1[1])

当我运行代码时,我希望输出显示如下(我的意思是我希望显示文件夹中的所有 csv 文件,以便我可以选择我想要的):

0-Test_Summary_1.csv
1-Test_Summary_2.csv
2-Test_Summary_3.csv
3-Test_Summary_4.csv
4-Test_Summary_5.csv
5-Test_Summary_6.csv etc

我得到的错误是

FileNotFoundError: 

尽管文件夹中有 csv 文件。我收到错误,因为找不到文件错误

【问题讨论】:

  • 首先你正在做folder_data = [i+"\\" for i in folder_data],然后你再添加一个sv_path = path + "\\"。结果你得到了无效的路径。
  • folder_data = [i+"\\" for i in folder_data] 这行导致问题
  • 使用os.path.join功能而不是通过`\`加入。
  • 如何修改此代码?
  • @PriyankaMishra,应用你的编码技能。我们已经向您指出了问题所在,现在就解决它。

标签: python windows file


【解决方案1】:

如果我正确理解了您的问题,那么您可以尝试以下方法:

import os
import pandas as pd

# see this answer about absolute paths in windows
# https://stackoverflow.com/a/7767925/9225671
base_path = os.path.join('f:', os.sep, 'Users', 'Desktop', 'Data', 'Summary')

# collect all CSV files in 'base_path' and its subfolders
csv_file_list = []
for dir_path, _, file_name_list in os.walk(base_path):
    for file_name in file_name_list:
        if file_name.endswith('.csv'):
            # add full path to the list, not just 'file_name'
            csv_file_list.append(
                os.path.join(dir_path, file_name))

print('CSV files that were found:')
for i, file_path in enumerate(csv_file_list):
    print('   {:3d} {}'.format(i, file_path))

selected_i = int(input('Enter corresponding number of the file to plot: '))
selected_file_path = csv_file_list[selected_i]
print('selected_file_path:', selected_file_path)

df = pd.read_csv(selected_file_path, header=None)
...

这对你有用吗?

【讨论】:

  • 当我运行此代码时,该文件夹中的所有 csv 文件都不会显示。如果显示所有 csv 文件,我可以选择相应的代码来绘制它
  • @PriyankaMishra 我不明白这个评论。代码的哪一部分不起作用?或者你有什么不同的期望?
  • 当我运行代码时,我希望输出显示为0-Test_Summary_1.csv 1-Test_Summary_2.csv 2-Test_Summary_3.csv 3-Test_Summary_4.csv 4-Test_Summary_5.csv 5-Test_Summary_6.csv etc,以便我可以选择相应的代码进行绘图
  • print('CSV files that were found:')文件夹内所有csv文件不显示
  • @PriyankaMishra 如果您在if file_name.endswith('.csv'): 行之前添加print(file_name),文件是否显示为您想要的?
猜你喜欢
  • 1970-01-01
  • 2015-03-25
  • 2016-06-05
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多