如何解决Python无法在生产中运行的Google云上找到文件
我从api中提取数据,并在本地存储和转换它。它在我的Windows计算机上与docker一起在本地运行,但在云运行环境下无法正常工作。我真的不知道为什么会这样。
app.py
...
try:
os.mkdir(os.path.join(os.getcwd(),'tmp'))
os.mkdir(os.path.join(os.getcwd(),'tmp','cpc'))
os.mkdir(os.path.join(os.getcwd(),'cpc','fin'))
os.mkdir(os.path.join(os.getcwd(),'raw'))
os.mkdir(os.path.join(os.getcwd(),'transformed'))
except:
print ("Creation of the directory failed")
...
loader.to_json(qcdp_final,os.path.join(os.getcwd(),'raw',f'{last_week_monday}.json'))
...
load.py
...
def to_json(self,data,filename):
self.data = data
self.filename = filename
with open(self.filename,'w') as outfile:
for row in self.data:
json.dump(row,outfile)
outfile.write('\n')
outfile.close()
...
Stacktrace
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/raw/2020-09-07.json'
at to_json (load.py:44)
at download_data_from_api (extract.py:51)
at main (app.py:39)
at dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1935)
at full_dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1949)
at reraise (/usr/local/lib/python3.8/site-packages/flask/_compat.py:39)
at handle_user_exception (/usr/local/lib/python3.8/site-packages/flask/app.py:1820)
at full_dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1951)
at wsgi_app (/usr/local/lib/python3.8/site-packages/flask/app.py:2446)
解决方法
在Linux系统上,禁止创建诸如/tmp
之类的文件夹。这是为操作系统保留的。我在Dockerfile中指定一个WORKDIR /app
这样的工作目录,并在此目录中创建tmp
文件夹。这可以解决问题。
不能保证/tmp
目录在容器实例之间可以持久存在。如果您希望文件成为docker映像的一部分,则需要将它们放在其他位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。