通过批处理调用我自己的python脚本

2024-05-14 22:12:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了一个脚本,然后在github上发现了另一个非常有用的脚本。我想自动化一个包含这两个脚本的更大的任务。我有一个批处理文件,如下所示:

for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul
cd C:\python_projects\json_to_csv
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Bloc_Québécois.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Bloc_Québécois.json F:\electoral_map\%1\candidates\candidates_Bloc_Québécois.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Christian_Heritage.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Christian_Heritage.json F:\electoral_map\%1\candidates\candidates_Christian_Heritage.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Conservative.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Conservative.json F:\electoral_map\%1\candidates\candidates_Conservative.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Forces_et_Démocratie.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Forces_et_Démocratie.json F:\electoral_map\%1\candidates\candidates_Forces_et_Démocratie.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Green_Party.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Green_Party.json F:\electoral_map\%1\candidates\candidates_Green_Party.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Liberal.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Liberal.json F:\electoral_map\%1\candidates\candidates_Liberal.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_Libertarian.json
json2csv.py F:\electoral_map\%1\candidates\candidates_Libertarian.json F:\electoral_map\%1\candidates\candidates_Libertarian.outline.json
gen_outline.py --collection objects F:\electoral_map\%1\candidates\candidates_NDP.json
json2csv.py F:\electoral_map\%1\candidates\candidates_NDP.json F:\electoral_map\%1\candidates\candidates_NDP.outline.json
replace_first_line.py F:\electoral_map\%1\candidates\candidates_Conservative.csv F:\electoral_map\%1\candidates\candidates_Conservative_namefixed.csv
chcp %cp%>nul
pause

我写了“先替换你”_线条.py另外两个脚本(“gen_大纲.py“和”json2csv.py文件)从github获取。你知道吗

这是你的第一次_线条.py地址:

from sys import argv

def replace_first_line(fin_path, fout_path):

    with open(fin_path) as fin:
        lines = fin.readlines()
        lines[0] = lines[0].replace('district_name,elected_office,election_name,email,extra_facebook,extra_instagram,extra_linkedin,extra_twitter,extra_youtube,first_name,gender,incumbent,last_name,name,offices_0_tel,offices_0_type,party_name,personal_url,photo_url,related_boundary_url,related_election_url,source_url,url',
                                    'district_name,elected_office,election_name,email,extra_facebook,extra_instagram,extra_linkedin,extra_twitter,extra_youtube,first_name,gender,incumbent,last_name,name_,offices_0_tel,offices_0_type,party_name,personal_url,photo_url,related_boundary_url,related_election_url,source_url,url')

    with open(fout_path, 'w') as fout:
        for line in lines:
            fout.write(line)

replace_first_line(argv[1], argv[2])

“先替换”_线条.py当我在IDE中运行它时,它可以正常工作,将“argv[1]”替换为传递到批处理文件中的同一个参数。当我用这个参数调用批处理文件时,它不起作用(我先把它改回“argv[1]”)

其余的脚本都能工作,那么有什么用呢?诚然,我的脚本是在Python3环境中编写的,但我不认为其中有任何东西不在Python2中。你知道吗


Tags: namepy脚本jsonurlmapobjectsextra
2条回答

底线:您正在将文件名插入文件名。 在python文件中

replace_first_line(argv[1],argv[1].replace(".csv","namefixed.csv")

否则,如果将20150915传递给批处理文件,那么最终传递给替换第一行的是F:\electoral_map\F:\electoral_map\20150915\candidates\candidates_Conservative.csv\candidates\candidates_Conservative.csv (注意两个f:\等)

Sending arguments from Batch file to Python script

看看这个,可能有用。批处理文件和python脚本使用参数的方式不同,因此可能与传递参数的方式有关。你知道吗

相关问题 更多 >

    热门问题