我有一个脚本,可将数据写入另一台服务器上的文件共享。我正在为网络共享上的单独数据集打开一个单独的文件并将其保存。问题是在循环中第5个文件左右后,打开失败并显示:
Exception has occurred: OSError[Errno 22] Invalid argument:
'\\\\file-storage\\storage\\waystar\\active\\ID-143892-Active.txt'
File "D:\AGB\test.py", line 7, in <module>
with open(fn,'w') as f:
我尝试直接映射到IP地址而不是网络共享名。我尝试将其映射到服务器上的驱动器号。我创建了以下重现此问题的测试代码。
import os
activedir=r'\\file-storage\storage\waystar\active'
IDs=['123457','123458','123459','143890','143891','143892']
for id in IDs:
fn=activedir+r'\ID-'+id+'-Active.txt'
with open(fn,'w') as f:
f.write("Hello World - what a bunch of crap.")
我想知道为什么列表中的最后一个文件失败。前五个正常工作并创建。最后一个不是,我得到了如上所述的Errno22。
我添加了一个带有except子句的try块,该子句只是试图再次打开文件。这在调试器中产生了有趣的结果。如果我在打开之前的except子句中将其停止并删除了先前创建的文件之一,则它将继续创建下一个文件。因此,必须有某种限制才能阻止我一次创建5个以上的文件?
import os
activedir=r'\\file-storage\storage\waystar\active'
IDs=['123457','123458','123459','143890','143891','143892']
for id in IDs:
fn=activedir+r'\ID-'+id+'-Active.txt'
try:
with open(fn,'w') as f:
f.write("Hello World - what a bunch of crap.")
except:
with open(fn,'w') as f:
f.write("Hello World - what a bunch of crap.")