2010-06-21 31 views
15

Im wrtiting tập lệnh lưu ngày và giờ hiện tại dưới dạng tên tệp nhưng tôi nhận được thông báo lỗi "TypeError: không phải tất cả các đối số được chuyển đổi trong khi định dạng chuỗi" Tôi mới sử dụng Python và có thể của một cái gì đó bị mất rõ ràng. Mã bên dưới:Python: Không phải tất cả các đối số được chuyển đổi trong khi định dạng chuỗi

from subprocess import Popen 
import datetime 

today = datetime.date.today() 

today = str(today) 

print today 

f = open("%s.sql", "w" % (today)) 
x = Popen(["mysqldump", "-u", "root", "-pucsdrv", "normalisationtion"], stdout = f) 
x.wait() 
f.close() 

Trả lời

29

Bạn đang đặt định dạng chuỗi ở vị trí sai; nó cần phải được ngay sau khi chuỗi đó được định dạng:

f = open("%s.sql" % (today), "w") 

Đó là pháp lý để không vượt qua bất kỳ đối số định dạng, như bạn đã làm với "%s.sql", nhưng nó không hợp pháp để vượt qua đối số nhưng không đúng số lượng ("w" % (today) đi một , nhưng không có chuỗi định dạng trong "w", vì vậy bạn nhận được một lỗi rằng không phải tất cả các đối số đã được sử dụng)

+0

'>>> "% s% s% s" % ('asdf', 'asdf') 'cung cấp cho tôi' TypeError: không đủ đối số cho chuỗi định dạng'. –

+0

@JonatanLittke Đã sửa lỗi –

4
f = open("%s.sql" % today, "w") 
Các vấn đề liên quan