Как удалить CSV-файл при выходе из операции Python - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь создать скрипт Python, который читает из файла CSV.При выходе из скрипта 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

Я хочу удалить «csvdata.csv» при выходе из программы Python.Но код должен быть в этом скрипте Python, поэтому он не должен включать ручное удаление csv.(Это так, потому что csv создается неоднократно другим скриптом Python, кроме этого)

Вся помощь будет оценена.Большое спасибо.

edit:

Я пытался использовать os для удаления файла, но он не работает.Я также пытался изменить пути, указанные в 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')

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Я думаю, вы могли бы просто использовать:

os.remove('csvdata.csv')

Если файл csv находится в том же каталоге скрипта, или вам нужно указать путь к файлу.Поиск около os.path.join() для построения системно-независимых каталогов.

Вы не должны использовать os.system('rm csvdata.csv'), так как это, вероятно, не будет работать в системах Windows, потому что это команда Unix.Но если вы используете функцию удаления, это будет работать с любой ОС.

Сертифицирует, что ваш код действительно останавливается.

0 голосов
/ 23 марта 2019

Используйте модуль 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

Или запустите скрипт python script.py из скрипта оболочки bash wrapper.sh и удалите его там.

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