繁体   English   中英

使用字符串输入在Python中遍历多个文件时出现“ IO错误:否此类文件或目录”?

[英]Getting 'IO Error: No Such file or directory' when using string input to loop through multiple files in Python?

我只是使用基本的csv模块来尝试读取Python中的多个文件。 在循环遍历不同的值并将其作为每个循环中不同文件名字符串的一部分输入之前,我已经使用了这种方法。 由于某种原因,我收到错误消息,说/home/rwakefield/soil_anom2/%s.csv不存在。 由于某种原因,它无法识别我要使用的字符串输入,这将导致文件路径看起来像:“ /home/rwakefield/soil_anom2/25_31_by_255_266.csv”

当我使用相同的方法编写文件时,这不是问题。 尝试从文件中检索信息只是一个问题。 有没有更好的方法循环遍历多个csv文件并读取它们的数据? 我所有的标题都按数字顺序排列,因此我认为循环是可行的。

import netCDF4 as nc
import numpy as np
import numpy.ma as ma
import csv as csv


for m in range(25, 49, 6):
    lat_min=float(m)
    lat_max=float(m+5.999)
    lat_max_string=lat_min+6
    lat_min2_string=int(m)
    lat_max2_string=int(lat_max_string)

    for n in range (-105,-72,11):
        lon_min=float(n+.0001)
        lon_max=float(n+11)

        lon_min_string=n+360
        lon_max_string=lon_max+360
        lon_min2_string=int(n+360)
        lon_max2_string=int(lon_max+360)

        filestring_float=str(lat_min)+'_'+str(lat_max_string)+'_by_'+str(lon_min_string)+'_'+str(lon_max_string)+'_TC'
        filestring_int=str(lat_min2_string)+'_'+str(lat_max2_string)+'_by_'+str(lon_min2_string)+'_'+str(lon_max2_string)

        for i in range (1954,2015):

            year=str(i)

            for j in range (1,13):
                month=str(j)
                MO=[]
                YR=[]
                MO.append(int(month))
                YR.append(int(year))
                TC=[]
                SA=[]
                MEAN=[] 
                mean=[]
                Y=[]
                f=open('home/rwakefield/COOK/soil_anom2/%s.csv') %(filestring_int,)

                f2=open('/home/rwakefield/COOK/tor_count/%s.csv') %(filestring_float,)

您没有正确格式化字符串。 括号告诉您如何解析分组:将带有文字'%s'的字符串传递给open() ,然后发生这种情况,然后由一个tuple对其进行% 取而代之的是,替换变量需要放在括号内,并放在其中:

f=open('home/rwakefield/COOK/soil_anom2/%s.csv' % filestring_int)
f2=open('/home/rwakefield/COOK/tor_count/%s.csv' % filestring_float)

您还可以使用较新样式的字符串格式:

f=open('home/rwakefield/COOK/soil_anom2/{}.csv'.format(filestring_int))
f2=open('/home/rwakefield/COOK/tor_count/{}.csv'.format(filestring_float))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM