如何将数据保存到特定文件夹并在 csv 文件中添加 header 行

How to save data to a specific folder and add header line in csv file

我有一本字典,代码如下:

def _fetch_currencies():
    f = urllib.request.urlopen('http://openexchangerates.org/api/currencies.json')
    str_f = f.readall().decode('utf-8')
    currencies_lst = json.loads(str_f)
    sorted_currencies = sorted(currencies_lst.items())
    return(sorted_currencies)

这用于从网站获取货币。

我需要用 "code" 和 "name" 列保存货币,其中货币代码和名称保存到特定文件夹。

我有一些保存代码,但当我在其他地方需要它时,它总是保存到我的 python 文件夹中

代码如下:

def save_currencies(_fetch_currencies, filename):   
    with open(filename, 'w') as my_csv:
        csv_writer = csv.writer(my_csv, delimiter=',')
        csv_writer.writerows(_fetch_currencies)

我也不知道如何在保存的顶部添加列标题。

先指定要保存文件的文件夹路径,然后在csv文件中写入headers。使用 iteritems() 方法遍历字典并在末尾写入每个键和值。

def save_currencies(_fetch_currencies, filename):   
    with open("path/to/folder/{}".format(filename), 'wb') as my_csv:
       csv_writer = csv.writer(my_csv, delimiter=',')
       csv_writer.writerow(["code","name"])  
       for k,v in _fetch_currencies.iteritems(): 
          csv_writer.writerow([k,v])

(抱歉我的英语不好)

您可以在文件开头手动添加 header 行:

def save_currencies(_fetch_currencies, filename):
    with open(filename, 'w') as my_csv:
        my_csv.write('code,name\n')   # add header line
        csv_writer = csv.writer(my_csv, delimiter=',')
        csv_writer.writerows(_fetch_currencies)

如果要更改目录,需要在 filename 变量中附加路径。

记住绝对路径和相对路径的区别。如果您作为 filename 参数字符串 'output.txt' 传递,它将被放置在当前目录中。将绝对路径传递到目标目录,例如:'/home/username/output.txt' 或相对路径 '../output.txt' 写入相对于当前 python 目录的 parent 目录。

要连接目录和文件名,您可以使用 os.path.join 函数