Duy*_*Bui 4 python csv io pandas
我知道这听起来是一个常见的错误,在 stackoverflow 上被多次询问过。但是,我很确定我的问题是新的,因为我几乎通读了相关主题。
我有两个文件如下:
ALL_USER_PATH = 'all.csv'
NEW_USER_PATH = 'new.csv'
Run Code Online (Sandbox Code Playgroud)
我先打开“所有”文件进行阅读
with open(ALL_USER_PATH, "r") as f:
df = pd.read_csv(f) #pd is pandas
f.close()
Run Code Online (Sandbox Code Playgroud)
接下来,我删除“新”文件的内容并准备向其中写入新数据
if os.path.isfile(NEW_USER_PATH):
os.remove(NEW_USER_PATH)
Run Code Online (Sandbox Code Playgroud)
写信给它,它工作正常
with open(NEW_USER_PATH, "a") as csv_n:
#writer_n is to write new users
writer_n = csv.writer(csv_n, delimiter=",", lineterminator='\n')
for user in customer_records:
if checkExistence(df): # a method I wrote before
continue
else:
writer_n.writerow([data_to_be_written])
Run Code Online (Sandbox Code Playgroud)
接下来,我删除“所有”文件并向其写入新数据
if os.path.isfile(ALL_USER_PATH):
os.remove(ALL_USER_PATH)
with open(ALL_USER_PATH, "a") as csv_a:
writer_a = csv.writer(csv_n, delimiter=",", lineterminator='\n')
for user in customer_records:
writer_a.writerow([all_data_to_be_written])
Run Code Online (Sandbox Code Playgroud)
错误
“关闭文件上的 ValueError i/o 操作”
在最后一行抛出这里将数据写入“所有”文件。我想是因为我之前打开过它,但我确实记得在阅读数据后关闭它,不是吗?有人可以让我知道问题是什么吗?
小智 9
我也有这个错误,但找到了另一个有答案的问题,它奏效了。
在您离开缩进块后with open (csv file.csv) as csv:,它将关闭文件。
with open('ALL_USER_PATH','a') as csv_a:
writer_a = csv.writer(csv_n, delimiter=",", lineterminator='\n')
# Here the file stays open
# Here the file is closed
Run Code Online (Sandbox Code Playgroud)
我希望我能帮上忙。