我想永远循环我的函数。但我正在挣扎。
import os
import requests
import glob
import time
import base64
url = 'http://0.0.0.0:5000/'
def load_data():
os.chdir('./40_mb')
for image in glob.glob('*.jpg'):
with open(image, 'rb') as imageFile:
# image_s = base64.b64encode(imageFile.read())
image_s = {'file_image':open(image, 'rb')}
return image_s
def send_data():
start = time.time()
r = requests.post(url, files = load_data())
end = time.time()
print('client 1: {} ms'.format((end - start)*1000))
if __name__ == "__main__":
while True:
send_data()
当我运行它,我得到这个错误:
Traceback (most recent call last):
File "http_1.py", line 32, in <module>
send_data()
File "http_1.py", line 23, in send_data
r = requests.post(url, files = load_data())
File "http_1.py", line 11, in load_data
os.chdir('./40_mb')
FileNotFoundError: [Errno 2] No such file or directory: './40_mb'
没有while True,我的代码运行良好。有人能帮我解决这个问题吗?如果这是个愚蠢的问题,我很抱歉。谢谢提前 问题来源StackOverflow 地址:/questions/59387115/how-to-run-function-in-forever-loop
在while循环中,似乎没有重定向到正确的目录。要解决这个问题,您需要将工作目录更改为最初的起始位置。一个真正干净和方便的方法是在上下文管理器中使用它,只是为了更干净、更可重用的代码。
import os
import os
import requests
import glob
import time
import base64
from contextlib import contextmanager
@contextmanger
def workingdir(path):
try:
origin = os.getcwd()
os.chdir(path)
yield
except:
print('error occured') #might be better to logging the error instead of a just a print statement
finally:
os.chdir(origin)
url = 'http://0.0.0.0:5000/'
def load_data():
with workingdir(path):
for image in glob.glob('*.jpg'):
with open(image, 'rb') as imageFile:
# image_s = base64.b64encode(imageFile.read())
image_s = {'file_image':open(image, 'rb')}
return image_s
def send_data():
start = time.time()
r = requests.post(url, files = load_data())
end = time.time()
print('client 1: {} ms'.format((end - start)*1000))
if __name__ == "__main__":
while True:
send_data()
这样,每次while循环运行时,它都会直接返回它开始的目录。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。