我第一次在AWS上使用Apache部署了Flask应用程序。加载HTML页面,但上传文件,编写文件和阅读文件等内容似乎不起作用。在下面的示例中,我调用此特定函数来写入从URL接收的数据。但是在这里,我禁用了它,代码只需要读取已经存在的文件。所以, export_po_list.xml 已经存在,我已经从终端检查了这个。这个相同的代码在我的电脑本地运行得很好。
检查 /var/log/apache2/error.log 显示
IOError: [Errno 13] Permission denied: 'export_po_list.xml'
我将chmod 777 -R添加到具有此烧瓶应用程序的整个文件夹中。它仍然无法运作。
def po_data(a,b,c):
array0 = []
array1 = []
array2 = []
array3 = []
array4 = []
array5 = []
array6 = []
array7 = []
array8 = []
array9 = []
array10 = []
array11 = []
array12 = []
array13 = []
array14 = []
array15 = []
array16 = []
array17 = []
array18 = []
array19 = []
array20 = []
url_begin = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet?$filter=ImBstyp eq '"
url_mid_1 = "' and ImBsart eq '"
url_mid_2 = "' and ImErnam eq '"
url_end = "'"
final_url = url_begin + a + url_mid_1 + b + url_mid_2 + c + url_end
print "\n\n"
print final_url
print "\n\n"
auth_get_po_data ='S4H_FIN','Welcome1'
headers_get_po_data = {"Content-type":'application/json;charset=utf-8'}
final_url = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet?$filter=ImBstyp eq 'F' and ImBsart eq 'NB' and ImErnam eq 'S4H_MM'"
#Post data back
# final_url = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_ALL_OPEN_PO_SRV/ZRECEASY_ALL_OPEN_POSet?
# r_get_po_data = requests.get(final_url,headers=headers_get_po_data,auth=auth_get_po_data, verify=False)
# print r_get_po_data.text
print os.getcwd()
# Write temporary XML file to work on parsing
# file = open('export_po_list.xml', 'w')
# file.write(r_get_po_data.text)
# file.close()
# Read XML file
print os.getcwd()
tree = ET.parse('export_po_list.xml')
root = tree.getroot()
#Extract relevant info
for child in root:
for child2 in child:
for child3 in child2:
counter = 1
for child4 in child3:
# 5 24
if (counter == 5):
array0.append(str(child4.text))
elif (counter == 6):
array1.append(str(child4.text))
elif (counter == 7):
array2.append(str(child4.text))
elif (counter == 8):
array3.append(str(child4.text))
elif (counter == 9):
array4.append(str(child4.text))
elif (counter == 10):
array5.append(str(child4.text))
elif (counter == 11):
array6.append(str(child4.text))
elif (counter == 12):
array7.append(str(child4.text))
elif (counter == 13):
array8.append(str(child4.text))
elif (counter == 14):
array9.append(str(child4.text))
elif (counter == 15):
array10.append(str(child4.text))
elif (counter == 16):
array11.append(str(child4.text))
elif (counter == 17):
array12.append(str(child4.text))
elif (counter == 18):
array13.append(str(child4.text))
elif (counter == 19):
array14.append(str(child4.text))
elif (counter == 20):
array15.append(str(child4.text))
elif (counter == 21):
array16.append(str(child4.text))
elif (counter == 22):
array17.append(str(child4.text))
elif (counter == 23):
array18.append(str(child4.text))
elif (counter == 24):
array19.append(str(child4.text))
elif (counter == 25):
array20.append(str(child4.text))
counter = counter + 1
return array0, array1, array2, array3, array4, array5, array6, array7, array8, array9, array10, array11, array12, array13, array14, array15, array16, array17, array18, array19, array20
答案 0 :(得分:4)
不要使用文件的相对路径名,您需要计算绝对路径并确保该位置是可写目录。这是必要的,因为Apache的当前工作目录通常是根目录,它不能写入您的代码运行的用户。
有关详细信息,请参阅以下位置的mod_wsgi文档: