2010-10-15 44 views
30

Tôi muốn để có thể tạo ra một số tập tin văn bản với tên fileX.txt trong đó X là số nguyên:Đúc một int vào một chuỗi bằng Python

for i in range(key): 
    filename = "ME" + i + ".txt" //Error here! Can't concat a string and int 
    filenum = filename 
    filenum = open(filename , 'w') 

Có ai khác biết làm thế nào để làm tên tệp = "ME" + phần i để tôi nhận danh sách tệp có tên: "ME0.txt", "ME1.txt", "ME2.txt" và v.v.

+2

Python được (nhiều hơn) gõ mạnh hơn các ngôn ngữ như Perl và Rexx, và sẽ không làm loại lồi ngầm rsions. –

Trả lời

69
x = 1 
y = "foo" + str(x) 

Xin vui lòng đọc các tài liệu Python: http://docs.python.org/

+14

Nếu chúng ta sẽ hoài nghi, "hãy đọc thông báo lỗi và suy nghĩ trong vài giây" –

19

Đối với phiên bản Python trước 2.6, sử dụng số string formatting operator %:

filename = "ME%d.txt" % i 

cho 2.6 và sau đó, sử dụng phương thức str.format():

filename = "ME{0}.txt".format(i) 

Mặc dù ví dụ đầu tiên vẫn hoạt động ở 2.6, ví dụ thứ hai vẫn được ưu tiên.

Nếu bạn có nhiều hơn 10 tác phẩm để đặt tên theo cách này, bạn có thể muốn thêm số không hàng đầu để các tập tin được sắp xếp một cách chính xác trong danh sách thư mục:

filename = "ME%02d.txt" % i 
filename = "ME{0:02d}.txt".format(i) 

Điều này sẽ tạo tên tập tin như ME00.txt để ME99.txt . Để có nhiều chữ số hơn, hãy thay thế 2 trong các ví dụ có số cao hơn (ví dụ: ME{0:03d}.txt).

5

Hoặc:

"ME" + str(i) 

Hoặc:

"ME%d" % i 

thứ hai thường được ưa thích, đặc biệt là nếu bạn muốn xây dựng một chuỗi từ nhiều thẻ.

4

Bạn có thể sử dụng str() bỏ nó, hoặc trình định dạng:

"ME%d.txt" % (num,) 
2

Ở đây câu trả lời cho mã của bạn như toàn bộ:

key =10 

files = ("ME%i.txt" % i for i in range(key)) 

#opening 
files = [ open(filename, 'w') for filename in files] 

# processing 
for i, file in zip(range(key),files): 
    file.write(str(i)) 
# closing 
for openfile in files: 
    openfile.close() 
Các vấn đề liên quan