场景:我有一个test.py文件,其中包含以下代码。
import json
import os
import sys
def check()
url = os.popen("curl api.openweathermap.org/data/2.5/weather?id=2172797 2>dev/null")
uri = json.loads(url)
f_check = file("/home/1/file1.txt",'r')
f_data = f_check.read()
chk_data = int(f_data)
f1 = open("file1.txt", "w")
n1 = f1.write(str(uri) + "\n")
f1.close()
在上面提到的test.py文件位于“/ home / check”的位置我想用它作为模板文件,可以用于在不同位置部署其他用途说“/ home / word”只是改变它中的一些变量,如用户将提供的url和file1.txt文件位置。 我找不到方便的方法。
任何帮助将不胜感激。
答案 0 :(得分:0)
问题:...更改其中的一些变量,如url和file1.txt文件位置
目前还不清楚你想对chk_data
做些什么。
尝试了您的示例代码,发现您正在阅读chk_data
,但之后无所事事。请编辑您的问题,并通过示例数据更详细地解释。
此示例可用于不同的url
,file lcation
和filename
。
注意:我使用
module urllib
代替os.popen("curl...
。
第一个解决方案,从终端窗口传递参数:
import urllib.request
import urllib.parse
def check(url, params, filename):
params = urllib.parse.urlencode(params)
url = "{}?{}".format(url, params)
with urllib.request.urlopen(url) as f:
json_response = json.loads(f.read().decode('utf-8'))
with open(filename, 'w') as f_out:
f_out.write(str(json_response))
if __name__ == '__main__':
url = sys.argv[1]
params = {}
for param in sys.argv[2].split(' '):
key, value = param.split('=')
params[key] = value
if url == 'openweathermap.org':
url = 'http://samples.openweathermap.org/data/2.5/weather'
params['appid'] = 'b1b15e88fa797225412429c1c50c122a1'
check(url, params, sys.argv[3])
<强>用法强>:
:# python openweathermap.org "id=2172797" /home/word/my_file.txt
第二个解决方案,将test.py
用作module
的{{1}}。{
新Python脚本中的参数。
注意:这需要
import check
中的home.check.test
!
创建新的PYTHONPATH
文件,例如*.py
openweathermap.py
<强>用法强>:
from home.check.test import check if __name__ == '__main__': url = 'http://samples.openweathermap.org/data/2.5/weather' params = {'id':'2172797', 'appid':'b1b15e88fa797225412429c1c50c122a1'} check(url, params, '/home/word/my_file.txt')
使用Python测试:3.4.2