我写了以下脚本
#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
########
N = 92
lookup = 'The forecast spread is'
iday_start = 1
iday_end = 1
year = 2013
month = 07
extension_type1 = '-RTPSinfl.dat'
extension_type2 = 'engl_var_anal.'
extension = 2
######### Append the files into files
for iday in range (iday_start, iday_end+1):
day = str(0) + str(iday)
for itime in range(0,24,6) :
if itime < 12:
ihour = str(0) + str(itime)
else:
ihour = str(itime)
if extension == 1 :
file = str(year)+str(month) + day + ihour + extension_type1
print(file)
elif extension == 2 :
file = extension_type2 + str(year)+str(month)+day+ihour+'.1.out'
print(file)
#========
f = open(file)
lines = f.readlines()
f.close()
with open(file) as myFile:
for num, line in enumerate(myFile,1):
if lookup in line:
print 'found at line:', num
num = num+2
numN = num + N
lrange = range(num,numN)
for l in lrange:
for ii in range(0,7):
nstart = numN + ii * (N+2) + 1
lrange = range(nstart,nstart+N)
for l in lrange:
print lines[l],
myFile.close()
,这是错误消息
IOError: [Errno 2] No such file or directory: 'engl_var_anal.201370100.1.out'
文件engl_var_anal.201370100.1.out确实存在。
答案 0 :(得分:1)
Python将从脚本位置 NOT 加载运行脚本的目录中的文件。如果这没有帮助,您可以向我们提供您正在运行的确切命令以及该文件所在的完整路径吗?
修改强>:
要查找的一件事是,在程序输出时,文件名中的数字位数完全相同。处理将字符串打印到字符串时,这是一个常见的错误。看起来您希望您的月份为2位数“07”,但您的输出文件名只有1.请仔细检查。
如果您需要2位数,请执行某种字符串格式设置,如:
file = extension_type2 + "%04d%02d%02d%04d" % (year, month, day, ihour) + ".1.out"
或使用datetime对象和strftime格式化日期/时间。
如果你cd /dir/with/files_and_script
,那么运行ls -l
(假设是linux shell)并看到“test.py”和“engl_var_anal.201370100.1.out”,然后运行python
,.. .some code ...,execfile("test.py")
......这应该有效。