2015-09-09 85 views
1

我想知道如何將腳本保存到桌面。這裏是我的代碼:python reportlab用畫布保存到指定位置

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter 
from reportlab.platypus import Image 

import csv 
import os 

data_file = "hata.csv" 


def import_data(data_file): 
    inv_data = csv.reader(open(data_file, "r")) 
    for row in inv_data: 
     var1 = row[0] 
     # do more stuff 

     pdf_file = os.path.abspath("~/Desktop/%s.pdf" % var1) 
     generate_pdf(variable, pdf_file) 


def generate_pdf(variable, file_name): 

    c = canvas.Canvas(file_name, pagesize=letter) 

    # do some stuff with my variables 
    c.setFont("Helvetica", 40, leading=None) 
    c.drawString(150, 2300, var1) 

    c.showPage() 
    c.save() 

import_data(data_file) 

所以這完美的作品,並將其保存/創造我想要的PDF - 但在腳本的目錄。我寧願將它保存到桌面上。

當我研究發現os.path.abspath時,我以爲我解決了它;但我收到以下錯誤

File "/usr/local/lib/python3.4/site-packages/reportlab/pdfbase/pdfdoc.py", line 218, in SaveToFile 
    f = open(filename, "wb") 
FileNotFoundError: [Errno 2] No such file or directory: '/Users/TARDIS/Desktop/tests/~/Desktop/00001.pdf' 

它告訴我,它試圖挽救我的腳本的主文件夾開始。我怎樣才能看到它?

回答

1

經過多次嘗試和錯誤使用不同的方法,都有弊端,我想出了一個解決方案,並認爲我會張貼在這裏爲後代。如果對於更有經驗的人來說這是顯而易見的,那麼我對編程頗爲陌生,所以很抱歉。

首先,我給我的PDF文件的名稱:

pdf_name = number + ".pdf" 

於是,我找到的路徑,在桌面上爲當前用戶(因爲我不知道用戶名是什麼,這是問題的根源),並創建一個路徑,以便可以將pdf保存到那裏。

save_name = os.path.join(os.path.expanduser("~"), "Desktop/", pdf_name) 

最後,這是傳遞到我的PDF生成功能:

... 
    save_name = .... 
    generate_pdf(variable, save_name) 

def generate_pdf(variable, save_name): 

    c = canvas.Canvas(save_name, pagesize=letter) 
.... 

就是這樣。