如何在Python操作退出时删除csv文件

如何在Python操作退出时删除csv文件,python,python-2.7,csv,numpy,numpy-ndarray,Python,Python 2.7,Csv,Numpy,Numpy Ndarray,我正在尝试制作一个从csv文件读取的Python脚本。在Python脚本退出或Python程序终止或终止时,我希望它删除它正在读取的csv文件。我该怎么做?这是我的密码 import numpy as np import csv count=1 while (count>0): csv=np.genfromtxt("csvdata.csv", delimiter=",", filling_values=np.nan, dtype=int, case_sensitive=True

我正在尝试制作一个从csv文件读取的Python脚本。在Python脚本退出或Python程序终止或终止时,我希望它删除它正在读取的csv文件。我该怎么做?这是我的密码

import numpy as np
import csv

count=1

while (count>0):
    csv=np.genfromtxt("csvdata.csv", delimiter=",", filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
    ref=np.genfromtxt("refdata.csv", delimiter=",", filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
    A=np.array(csv)
    B=np.array(ref)
    D = B - A[-1]
    match= B[np.abs(D).sum(axis=1).argmin()]
    print match
    count = count + 1
我想在Python程序退出时删除“csvdata.csv”。但是代码必须在这个Python脚本中,这样就不必手动删除csv。(之所以如此,是因为csv是由除此之外的另一个Python脚本重复创建的)

一切帮助都将不胜感激。多谢各位

编辑:

我尝试使用操作系统删除该文件,但无法运行。我还尝试更改使用
rm
指定的路径

import numpy as np
import csv
import os

count=1

while (count>0):
    csv=np.genfromtxt("csvdata.csv", delimiter=",", filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
    ref=np.genfromtxt("refdata.csv", delimiter=",", filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
    A=np.array(csv)
    B=np.array(ref)
    D = B - A[-1]
    match= B[np.abs(D).sum(axis=1).argmin()]
    print match
    count = count + 1

os.system('rm csvdata.csv')

使用
os
模块在python之外执行命令

# if csvdata.csv is in your current directory; do 
import os 
os.system("rm csvdata.csv") # linux/mac, definitely
# os.system("del csvdata.csv") # windows, probably  
# .. else; use full path
或者从bash包装器脚本
wrapper.sh
运行python脚本
script.py
,并在其中删除它

#!/bin/bash
echo "running script..."
python script.py
echo "deleting file..."
rm csvdata.csv
echo "done!"

使用
os
模块在python之外执行命令

# if csvdata.csv is in your current directory; do 
import os 
os.system("rm csvdata.csv") # linux/mac, definitely
# os.system("del csvdata.csv") # windows, probably  
# .. else; use full path
或者从bash包装器脚本
wrapper.sh
运行python脚本
script.py
,并在其中删除它

#!/bin/bash
echo "running script..."
python script.py
echo "deleting file..."
rm csvdata.csv
echo "done!"

我想你可以用:

os.remove('csvdata.csv')

如果csv文件位于脚本的同一目录中,或者需要提供文件的路径。搜索关于
os.path.join()
以构建独立于系统的目录路径

您不应该使用
os.system('rm csvdata.csv')
,因为这在windows系统上可能不起作用,因为它是一个Unix命令。但是,如果您使用删除功能,这将处理任何操作系统


证明你的代码真的停止了

我想你可以用:

os.remove('csvdata.csv')

如果csv文件位于脚本的同一目录中,或者需要提供文件的路径。搜索关于
os.path.join()
以构建独立于系统的目录路径

您不应该使用
os.system('rm csvdata.csv')
,因为这在windows系统上可能不起作用,因为它是一个Unix命令。但是,如果您使用删除功能,这将处理任何操作系统


证明你的代码真的停止了

你的循环不是一直在走吗?难道你不需要一个
中断
?你的循环不是一直在循环吗?难道你不需要一个
中断
?它只会在Python操作终止时删除csv吗?Python标准库有用于文件系统操作的函数。它们将比使用
os.system()
更快、更可移植。一般来说,调用外部程序不应该是你首先要做的事情。另外,@Chris将
subprocess.run()
视为一个更完整的
os.system()
,至少在python3(编辑)中是完全正确的-在python2中使用
subprocess.call()
。我不会谈论
subprocess.run()
。这只是调用外部程序的另一种方式。它仍然会很慢而且不便于携带。另外,界面非常笨拙。我说的是
os.unlink()
pathlib
,等等。你能用初学者的角度解释一下吗,我不懂这些,我真的很抱歉,我是Python新手。此外,操作系统模块不工作,我尝试更改路径,但没有效果。它是否仅在Python操作终止时删除csv?Python标准库具有用于文件系统操作的函数。它们将比使用
os.system()
更快、更可移植。一般来说,调用外部程序不应该是你首先要做的事情。另外,@Chris将
subprocess.run()
视为一个更完整的
os.system()
,至少在python3(编辑)中是完全正确的-在python2中使用
subprocess.call()
。我不会谈论
subprocess.run()
。这只是调用外部程序的另一种方式。它仍然会很慢而且不便于携带。另外,界面非常笨拙。我说的是
os.unlink()
pathlib
,等等。你能用初学者的角度解释一下吗,我不懂这些,我真的很抱歉,我是Python新手。另外,操作系统模块不起作用,我试图改变路径,但没有效果。在Python3中,有一个名为pathlib的库也可以处理这个问题。检查此链接:这种方法不会调用任何命令到终端。对于Python3,有一个名为pathlib的库也可以处理此问题。检查此链接:此方法不会向终端调用任何命令。