Невозможно удалить временный файл с именем Python в WindowsPython

Программы на Python
Ответить
Anonymous
 Невозможно удалить временный файл с именем Python в Windows

Сообщение Anonymous »

Я использую Python 3.13.9 и у меня есть сценарий, который создает временный файл, считывает данные из базы данных и выводит их в виде CSV в указанный временный файл, а затем отправляет этот файл на сервер. Я пытаюсь удалить временный файл, когда это будет сделано.

Код: Выделить всё

    logging.info(f"Updating list {list["name"]} using session token {token}.")

# Create a temporary CSV file
with tempfile.NamedTemporaryFile(mode="w+", newline="", suffix=".csv", delete=False) as temp_file:
temp_path = temp_file.name

logging.info(f"Using temp file {temp_file.name}.")

# Connect to SQL Server
conn_str = (
f"DRIVER={{{DRIVER}}};"
f"SERVER={list["server"]};"
f"DATABASE={list["database"]};"
"Trusted_Connection=yes;"
"TrustServerCertificate=yes;"
)

logging.info(f"Connecting to SQL Server {conn_str}.")
with pyodbc.connect(conn_str) as conn:
cursor = conn.cursor()

logging.info(f"Executing query '{list["query"]}'.")
cursor.execute(list["query"])

logging.info(f"Writing column headers.")
column_names = [column[0] for column in cursor.description]
writer = csv.writer(temp_file)
writer.writerow(column_names)

logging.info(f"Writing data lines.")
for row in cursor:
writer.writerow(row)

payload={}
files=[('file',(temp_file.name,open(temp_file.name,'rb'),'text/csv'))]
headers = {'X-Gatekeeper-SessionToken': token,'FastField-API-Key': APIKEY}
logging.info(f"Sending list csv file to {list["url"]} using token {token}.")
response = requests.request("PUT", list["url"], headers=headers, data=payload, files=files)
logging.info(f"Received response {response.text}.")

return response.text

# Remove the temp file created above
os.remove(temp_path)
Это всегда выдает ошибку «PermissionError: [WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом» в строке os.remove. Я попытался сначала закрыть файл вручную и получил ту же ошибку. Я попытался установить delete=True, но получил ошибку разрешения. Как мне удалить этот файл, когда я с ним закончу?

Подробнее здесь: https://stackoverflow.com/questions/798 ... in-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»