Как удалить файл, прикрепленный к переменной в Python

#python #pandas #pdfkit

Вопрос:

В качестве краткого изложения этого кода этот скрипт преобразует файл .xlsx в файл .pdf. После этого я намерен удалить файл excel, чтобы убедиться, что файл excel, который я использую, доступен для подделки (мне еще предстоит сделать файл .pdf доступным только для чтения).

 import pandas as pd
import pdfkit
from datetime import datetime, date, time
import time
import os

os = 'Windows 10'
file_name = 'report_prototype_excel1.xlsx'
company_name = 'ABC Company'
audit_frequency = 'ANNUAL'
file_time = time.strftime("%d%m%Y-%H%M%S")

if os == 'Windows 10':
  config = pdfkit.configuration(wkhtmltopdf='C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
elif os == "Windows Server 2019":
  print("Placeholder Windows Server 2019")
elif os == "MacOS":
  print("Placeholder MacOS")
else:
  print("Placeholder Ubuntu/Debian")

df = pd.read_excel(file_name)
df = df.fillna(" ")
df.to_html("report_prototype_html1.html")
options = {
    'page-size': 'A4',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
}
pdfkit.from_file("report_prototype_html1.html", company_name   '_'   audit_frequency   '_audit_report_pdf_'   file_time   '.pdf', configuration=config, options=options)
os.remove (file_name)
 

Однако, поскольку я буду присваивать файлы фиксированной переменной, команда «os.remove» не работает, что приводит к следующей ошибке:

 Traceback (most recent call last):
  File "c:Users********Documents****************report_prototype_python_MAIN.py", line 33, in <module>        
    os.remove (file_name)
AttributeError: 'str' object has no attribute 'remove'
 

Есть ли решение моего затруднительного положения?

Ответ №1:

Вы импортировали os модуль, а также назначили переменную os = 'Windows 10' . Потому os что теперь это строка, в ней нет remove метода, который вы ищете.

Пожалуйста, переименуйте os переменную во что-нибудь другое.

Ответ №2:

os = 'Windows 10' этим предложением вы переопределяете модуль os . просто переименуйте свою переменную.