При попытке загрузить файл из сообщения на 4chan (через BASC_py4chan) и загружая его через wget, wget загрузит файл, даже если я сделаю оператор if, говорящий, что он не загружает его, если имя файла совпадает с именем файла в текущем каталог? Является ли это проблемой wget-python или я совершил ошибку?
if 'ylyl' in subject or 'YLYL' in subject:
for post in thread.all_posts:
if post.has_file:
print(post.filename)
for filename in os.listdir(cwd):
print(filename)
if filename != post.filename:
url = post.file_url
wget.download(url)
time.sleep(1.03)
Я вижу проблему с вашим кодом. Проблема в этом:
for filename in os.listdir(cwd):
print(filename)
if filename != post.filename:
url = post.file_url
wget.download(url)
time.sleep(1.03)
Вы просматриваете каждый файл в каталоге. Это означает, что если у вас есть один файл в каталоге, который не называется так же, как и имя файла, он будет загружен.
Поэтому скажем, что ваш код пытается загрузить файл3, а ваш каталог содержит файлы file1, file2 и file3.
С этими файлами в каталоге оператор if будет делать эти три проверки.
if 'file1' != 'file3':
url = post.file_url
wget.download(url)
time.sleep(1.03)
if 'file2' != 'file3':
url = post.file_url
wget.download(url)
time.sleep(1.03)
if 'file3' != 'file3':
url = post.file_url
wget.download(url)
time.sleep(1.03)
Вместо этого вы можете попробовать проверить, указано ли имя файла в списке, который возвращает os.listdir().
Вот мое решение:
if 'ylyl' in subject or 'YLYL' in subject:
for post in thread.all_posts:
if post.has_file:
print(post.filename)
if post.filename not in os.listdir(cwd):
url = post.file_url
wget.download(url)
time.sleep(1.03)
Я думаю, вы можете изменить свой код на
if 'ylyl' in subject or 'YLYL' in subject:
for post in thread.all_posts:
if post.has_file:
print(post.filename)
# changed at here
if post.filename not in os.listdir(cwd):
url = post.file_url
wget.download(url)
time.sleep(1.03)