最后一行给出:
ValueError:对关闭的文件进行I / O操作。
import sys
for i in range(1,123):
if i%2 ==0:
sys.stdout = open('log1.txt', 'w')
print(i)
sys.stdout.close()
如何解决这些问题?
关于第一个问题,txt中仅打印最后插入的内容,而应该显示所有插入内容。
-更新
folder = path.Path(r"C:\Users\user\Desktop\SHAPE")
shapefiles = []
for shpfile in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
try:
shapefiles.append(geopandas.read_file(shpfile))
except FionaValueError as ex:
if not os.listdir(shpfile):
sys.stdout = open('log.txt', 'w')
print(f'{shpfile} is empty')
您能告诉我如何将此打印结果写入txt吗?
答案 0 :(得分:1)
正确的应该是:
with open('log1.txt', 'a') as myFile:
for i in range(1,123):
if i%2 ==0:
myFile.write(str(i) + '\n')
更正代码如下:
import sys
sys.stdout = open('log1.txt', 'a')
for i in range(1,123):
if i%2 ==0:
print(i)
sys.stdout.close()
您应该在迭代之外打开文件。您正在使用写入模式覆盖现有文件。
文件现在包含:
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
102
104
106
108
110
112
114
116
118
120
122
答案 1 :(得分:0)
我认为您可以从列表理解中受益匪浅,请考虑以下因素:
[str(i) for i in range(1,123) if i%2 == 0]
它创建一个字符串序列。然后,您可以继续进行加入连接。
完整示例
with open('log1.txt', 'w') as f:
f.write('\n'.join([str(i) for i in range(1,123) if i%2 == 0]))