我一直在尝试编写一个功能(要添加到MODULE中),我需要使用" wget" bash-mode中的命令。例如我在我的函数中有这一行,
href_aw = search_str_1 + collections[1]+ search_str_2 + str(RA) + '+' + str(Dec) + search_str_3
!wget -O url_list_dir/wise_allsky.dat "{href_aw}" --no-check-certificate
只要我在函数中有这个就可以正常工作。我可以执行它并获得所需的文件下载。 当我在模块中复制粘贴我的函数并尝试调用它时,我收到一条错误消息
"文件 " /Users/aprakash/Library/Enthought/Canopy/edm/envs/User/lib/python3.5/WISE_photometry_abhi.py" ;, 第67行
!wget -O url_list_dir / neo_wise.dat" {href_nw}" --no检查证书 ^ SyntaxError:语法无效"
因此,在浏览了一些互联网(stackoverflow)之后,我将我的wget命令更改为以下内容;
import os
os.system("wget -O url_list_dir/wise_allsky.dat '{href_aw}' --no-check-certificate")
但这会返回一个空文件。任何想法如何解决这一问题?请注意,我不能使用python wget模块和这样的命令;
wget.download(mask_3b, out = img_dir)
因为它不允许像" - no-check-certificate"这样的关键字。我必须使用它。
我不明白如果某些功能完全正常,因为函数只会因为从模块中调用而产生错误。我想重复一遍,如果我在编写它的同一个脚本中使用该函数,第一个命令就可以正常工作。
感谢您的帮助! ABHI
答案 0 :(得分:0)
我找到了另一种方法。上述任务可以使用"请求",' io'和"熊猫"。感谢所有的评论,它们很有用,我甚至没有听说过"请求"。
import requests
import pandas as pd
import io
href_aw = search_str_1 + collections[1]+ search_str_2 + str(RA) + '+' + str(Dec) + search_str_3
r_aw = requests.get(href_aw)
df_aw = pd.read_csv(io.StringIO(r_aw.text))
df_aw.to_csv(url_list_dir+'wise_allsky.dat')
答案 1 :(得分:-1)
也许尝试使用subprocess而不是os.system,所以像这样:
import subprocess
bashCommand = "wget -O url_list_dir/wise_allsky.dat '{href_aw}' --no-check-certificate"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()