Python: закрытие и удаление файлов - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь распаковать файл, прочитать один из извлеченных файлов и удалить извлеченные файлы.

  1. Извлеченные файлы (например, у нас есть файл1 и файл2)
  2. Считайте файл1 и закройте его.

    with open(file1, 'r') as f:
        data = f.readline()
    f.close()
    
  3. Сделайте что-нибудь с «данными».

  4. Удалить извлеченные файлы.

    os.remove(file1)
    

Все прошло нормально, за исключением того, что он получил эти сообщения в конце. Файлы также были удалены. Как правильно закрыть файлы?

    /tmp/file1: No such file or directory
    140347508795048:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/tmp/file1','r')
    140347508795048:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:

UPDATE: (Мой скрипт выглядит примерно так:

#!/usr/bin/python
import subprocess, os

infile = "filename.enc"
outfile = "filename.dec"
opensslCmd = "openssl enc -a -d -aes-256-cbc -in %s -out %s" % (infile, outfile)   
subprocess.Popen(opensslCmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,      close_fds=True)
os.remove(infile)

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Нет необходимости закрывать дескриптор файла при использовании with с менеджером контекста file, дескриптор автоматически закрывается при изменении области действия, т. Е. Когда выполняется readline.

См. Python Tutorial

2 голосов
/ 01 июня 2011

Ошибки, которые вы видите, не являются ошибками, поскольку Python сообщит о них.Они имеют в виду что-то кроме Python, пытавшееся открыть эти файлы, хотя трудно сказать, что из вашего маленького фрагмента.

Если вы просто пытаетесь извлечь некоторые данные из zip-файла,на самом деле нет причин извлекать их на диск.Вы можете просто прочитать данные непосредственно из zip-файла, извлекая их только в память, с помощью zipfile.ZipFile.open.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...