Python 设置保存文件目录和数组

Python 设置保存文件目录和数组,python,arrays,directory,Python,Arrays,Directory,我是Python新手,这是我的第一个脚本。我很想让它工作,希望能得到一些支持,帮助我进入语言领域 下面的脚本将url数据保存到csv,接下来我要做的两件事是 指定本地计算机上要保存到的文件夹,这样我就不需要py了。文件位于同一目录中。为了便于讨论,让我们说我不想保存到c:\myfiles,它们.py文件位于同一台机器上的任何其他位置 我想了解如何在python中构建变量数组并循环使用我的ASXCode变量。首先,假设我有CSL.ax和BHP.ax作为元素。最终,我想从外部源(如txt文件或SQL

我是Python新手,这是我的第一个脚本。我很想让它工作,希望能得到一些支持,帮助我进入语言领域

下面的脚本将url数据保存到csv,接下来我要做的两件事是

  • 指定本地计算机上要保存到的文件夹,这样我就不需要py了。文件位于同一目录中。为了便于讨论,让我们说我不想保存到c:\myfiles,它们.py文件位于同一台机器上的任何其他位置

  • 我想了解如何在python中构建变量数组并循环使用我的ASXCode变量。首先,假设我有CSL.ax和BHP.ax作为元素。最终,我想从外部源(如txt文件或SQL表)传递这个脚本,但现在为了帮助我学习,我很高兴在这个脚本中有一个静态数组(小步骤)。我假设我需要一个For循环或类似的循环来迭代代码中的元素

  • 我不要求任何人为我做这一切,有关方法/功能和程序流程的线索将非常有助于我解决问题

    谢谢

    巴斯曼

    import csv
    import os
    import urllib.request, urllib.parse, urllib.error
    
    ASXCode = 'CSL'
    local_filename = "Intra_" + ASXCode + ".csv"
    url = ('http://chartapi.finance.yahoo.com/instrument/1.0/' + ASXCode +
           '.ax/chartdata;type=quote;range=15d/csv')
    
    temp_filename, headers = urllib.request.urlretrieve(url)
    
    with open(temp_filename, 'r', newline='') as inf, \
         open(local_filename, 'w', newline='') as outf:
        reader = csv.reader(inf)
        writer = csv.writer(outf)
        for _ in range(32):   # skip first 32 rows
            next(reader)
        writer.writerows(reader)  # copy the rest
    
    os.remove(temp_filename)  # clean up
    print('{} downloaded'.format(local_filename))
    

    如果您想对ASXCode的不同值执行相同的代码,可以执行以下操作:

    ASXCodes = ('CSL', 'XXX', 'YYY')
    for ASXCode in ASXCodes:
        local_filename = "c:\\myfiles\\foobar\\" + ASXCode + ".csv"
        print("Saving to {}".format(local_filename))
        with open(local_filename, 'w', newline='') as outf:
            ...
    print("done")
    

    您是否尝试过
    local\u filename=“c:\myfiles\foobar.csv”
    将文件保存到其他文件夹中?对于第二个问题,我不明白你不能做什么。你能说得更准确些吗?嗨,帕特里克,提前谢谢你。local_filename=“c:\myFiles\CSL.csv”可以工作,但当我使用local_filename=“c:\myFiles\”+ASXCode+“.csv”时,扫描字符串文字时会出现错误EOL。如果我取出c:\myfiles末尾的\,它会运行,但会将我的文件保存到c:\并将myfile添加到文件名中。我一定错过了一些简单的东西。感谢我的第二部分,我想为变量ASXCode设置类似的内容。e、 g.ASXCode=('CSL,'BHP'),循环之后是ASXCode中每个元素的其余代码。也许我是从其他语言的角度考虑的,还不知道如何用Python正确地处理它。是的。“\”是一个转义字符(即
    \”
    放入字符串中)。你应该把每个`\``都加倍(我以前的答案是错的)。试试
    “c:\\myfiles\\foobar\\”+ASXCode+“.csv”
    谢谢Patrick,如果我想弄明白的话,我早就走投无路了。节省了我一堆时间。嗨,帕特里克,我刚带着for循环到达那里,你的解决方案就出现了。在for循环中还有一件事,假设我想让所有代码都循环,那么这就行了。但是,如果假设有10行代码,我希望循环前5行,然后运行剩余的非循环代码,那么它是否像在第5行之后放置“else”一样简单?我说得对吗?Python将循环缩进比
    更多的所有内容。如果你想在循环之外找到一些代码,就不要缩进它。我已经编辑了我的答案。