Python でリストをカンマ区切りで出力したい


リストの内容をカンマ区切りでテキストに出力するには  
どの様にすればよいのでしょうか？

`["犬", "ネコ", "豚"]` というリストを以下の様にテキストに書き込みたいです。

[code]

    犬,ネコ,豚
    
[/code]

下記コードを実行すると

[code]

    str_li = ["犬", "ネコ", "豚"]
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        for x in str_li:
            f.write(x)
    
    
[/code]

実行結果（test.txt）

[code]

    犬ネコ豚
    
[/code]

[code]

    with open('test.txt', 'w', encoding='utf-8') as f:
        for x in str_li:
            new_x = ",".join(x) # joinで連結
            f.write(new_x)
    
    
[/code]

以下の様になってしまいます。

[code]

    犬ネ,コ豚
    
[/code]




念のため，数値リストの場合も加えました。

[code]

    str_li = ['犬', 'ネコ', '豚']
    num_li = [1, 2, 3]
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(','.join(str_li) + '\n')
        f.write(','.join([str(x) for x in num_li]) + '\n')
    
    with open('test.txt', 'r', encoding='utf-8') as f:
        print(f.read(), end='')
    
[/code]

[code]

    犬,ネコ,豚
    1,2,3
    
[/code]

（追記）  
内包表記を使わない記述は下記になります。

[code]

    num_li = [1, 2, 3]
    
    num2str_li = []
    for x in num_li:
        num2str_li.append(str(x))
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(','.join(num2str_li) + '\n')
    
[/code]




joinは結合後の文字列を返すので、forでリストの中身を取り出さなくてもよいです。

[code]

    str_li = ["犬", "ネコ", "豚"]
    
    f = open('test.txt', 'w', encoding='utf-8')
    f.write(",".join(str_li))
    f.close()
    
[/code]

withを使ってファイルの閉じ忘れをなくしたい場合は、

[code]

    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(",".join(str_li))
    
[/code]

となります。

