Python TypeError: stat: путь должен быть строкой, байтами, os.PathLike или целым числом, а не списком - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в python, я написал простой скрипт для отправки всех изображений, отсортированных по времени в папке, в API. этот код работает только с одним файлом (jpg) и не может отправить остальное изображение в папке. Я хочу, чтобы, если я запустил этот код, он просто ждал, пока какое-то изображение не будет добавлено в текущую папку, когда изображение находится внутри папки, оно будет отправлено в API по времени на основе изображений, которые существовали впервые. Я очень запутался, любые подсказки будут оценены! спасибо

import glob
import argparse
import requests
import json
import time
import os

def main():
    result = []

    file = glob.glob("/path/to/dir/*.jpg")

    regions = ['id']

    time_to_wait = 10000
    time_counter = 0

    while not os.path.exists(file):
        time.sleep(1)
        time_counter += 1
        if time_counter > time_to_wait: break
        print("waiting for file...")

        if os.path.isfile(file):
            with open(file, 'rb') as fp:
                response = requests.post(
                    'https://GET_API/',
                    data=dict(regions=regions),
                    files=dict(upload=fp),
                    headers={'Authorization': 'Token ' + 'XXX'})
                result.append(response.json())
                resp_dict = json.loads(json.dumps(result, indent=2))
                if resp_dict[0]['results']:
                    num=resp_dict[0]['results'][0]['plate']
                    print(f"DETECTED NUMBER:  {num}")
                os.remove(file)

    else:
        print("file doesn't exists!")

if __name__ == '__main__':
    main()

1 Ответ

1 голос
/ 19 июня 2020

Вы не обновляли свой file на каждой итерации. Может поэтому больше не обнаруживаются новые файлы. file также нужно рассматривать как список, поэтому я думаю, вы должны перебирать file. Ваш while l oop должен выглядеть так:

while True:
    files = glob.glob(os.path.join('path', 'to', 'dir', '*.jpg'))
    for file in files:
        if os.path.isfile(file):
            with open(file, 'rb') as fp:
                # Upload and delete
    # sleep
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...