[英]how to run function in forever loop?
我想永远循环我的函数。 但我正在挣扎。
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
我的代码运行良好。 有没有人可以帮助我的问题? 对不起,如果这是一个愚蠢的问题。 提前致谢
在 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 循环运行时,它都会返回它开始的目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.