def getyuxing(str): with open(r'D:\6termsx\qhyc\sx56\ddi.txt', 'r') as f: lines = f.readlines() # 读取所有行 result = [] for i, line in enumerate(lines): # 遍历每一行 if str in line: # 判断该行是否包含str result.append(i+1) # 如果包含,记录该行号(从1开始) return result 修改这段代码,从第十行开始读起
时间: 2023-12-17 12:02:23 浏览: 141
修改后的代码如下:
``` python
def getyuxing(str):
with open(r'D:\6termsx\qhyc\sx56\ddi.txt', 'r') as f:
lines = f.readlines()[9:] # 从第10行开始读取
result = []
for i, line in enumerate(lines):
if str in line:
result.append(i+10) # 记录该行号(从1开始),需加上偏移量9
return result
```
修改后的代码在读取文件时使用索引切片方式,从第10行开始读取。同时,在记录包含指定字符串的行号时,需要加上偏移量9,才能得到正确的行号(从1开始)。
相关问题
unformatted I/O to unit open for formatted transfers, unit 1, file D:\6termsx\qhyc\sx34\hgt500.grd怎么解决
这个错误通常是因为你试图使用格式化传输打开一个已经用于未格式化传输的文件单位。你可以尝试在打开文件之前使用“close(unit)”命令关闭该文件,然后再打开一个新的文件单位进行格式化传输。你也可以尝试使用“rewind(unit)”命令将文件指针指向文件的开头,然后再进行格式化传输。如果这些方法都无法解决问题,那么你可能需要检查文件是否存在或者是否有读写权限。
import xarray as xr import numpy as np import matplotlib.pyplot as plt import cartopy.crs as ccrs def readdat(pth,var): ds = xr.open_dataset(pth) dat = ds[var] # 只读取每年1月的数据 dat = dat.sel(time=dat['time.month'].isin([1])) dat = dat.loc['1981-01-01':'2018-12-01','500',:,:] return dat if __name__=='__main__': pth=r'D:\6termsx\qhyc\sx1\hgt.mon.mean.nc' hgt=readdat(pth,'hgt') #print(hgt.shape) #print(hgt) wp = np.zeros(38) # 初始化空数组 for i in range(38): wp[i] =0.5*(hgt[i,12,62]-hgt[i,24,62]) wpm=np.mean(wp) #平均 wpa=wp[:]-np.tile(wpm,(wp.shape))#中心化 #print(wpa.shape) wps=wpa/np.tile(np.std(wpa),(wpa.shape))#标准化 #print(wps) x = np.linspace(1981,2018,38) plt.plot(x,wps) plt.show()最后如何将图像保存为PDF
可以使用`plt.savefig()`函数将图像保存为PDF格式,代码如下:
```
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
def readdat(pth,var):
ds = xr.open_dataset(pth)
dat = ds[var]
# 只读取每年1月的数据
dat = dat.sel(time=dat['time.month'].isin([1]))
dat = dat.loc['1981-01-01':'2018-12-01','500',:,:]
return dat
if __name__=='__main__':
pth=r'D:\6termsx\qhyc\sx1\hgt.mon.mean.nc'
hgt=readdat(pth,'hgt')
#print(hgt.shape)
#print(hgt)
wp = np.zeros(38) # 初始化空数组
for i in range(38):
wp[i] =0.5*(hgt[i,12,62]-hgt[i,24,62])
wpm=np.mean(wp) #平均
wpa=wp[:]-np.tile(wpm,(wp.shape))#中心化
#print(wpa.shape)
wps=wpa/np.tile(np.std(wpa),(wpa.shape))#标准化
#print(wps)
x = np.linspace(1981,2018,38)
plt.plot(x,wps)
plt.savefig('output.pdf')
```
在`plt.savefig()`函数中指定文件名为`'output.pdf'`即可。
阅读全文