watch_folder = r'D:/gangko/zip' upload_url = 'http://192.168.1.226:6060/dz' class FileEventHandler(FileSystemEventHandler): def on_created(self, event): if not event.is_directory: file_path = event.src_path with open(file_path, 'rb') as file: files = {'file': file} response = requests.post(upload_url, files=files) print(f"Uploaded {file_path}: {response.status_code}") if name == "main": event_handler = FileEventHandler() observer = Observer() observer.schedule(event_handler, watch_folder, recursive=True) try: observer.start() while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()这是上传的代码@app.route('/dz', methods=['POST']) def dezip(): now = datetime.now() current_time = now.strftime("%Y-%m-%d-%H-%M-%S") target_folder = (os.path.join(r'D:/backup', current_time)) os.mkdir(target_folder) files = request.files.getlist('file') for file in files: filename = file.filename file_path = os.path.join(target_folder, filename) file.save(file_path) return jsonify({"code": 200, "msg": "success"}) if name == 'main': app.run(host='0.0.0.0', port=6060) 这是接收压缩文件的代码,为什么文件会损坏?
时间: 2024-04-16 08:25:34 浏览: 166
根据你提供的代码,无法确定为什么文件会损坏。这段代码是一个简单的文件上传和保存的过程。
在上传的代码中,接收到的文件被保存在目标文件夹 `target_folder` 中。这段代码没有涉及到对文件进行压缩或解压缩的操作。因此,在这段代码中,文件不应该出现损坏问题。
如果你发现上传后的文件损坏,可能是其他代码或操作导致的问题。以下是一些可能引起文件损坏的原因:
1. 文件在上传过程中被修改或损坏。你可以尝试手动上传文件并检查是否损坏。
2. 文件在保存到 `target_folder` 时发生了错误。你可以检查是否存在目标文件夹 `target_folder`,并确保该文件夹有适当的写入权限。
3. 文件在保存过程中发生了错误,可能是由于存储介质故障或其他硬件问题导致的。你可以尝试将文件保存到其他位置或设备上,以验证是否仍然出现损坏问题。
此外,还应该确保接收文件的服务正常工作,并且能够正确处理接收到的文件。
如果问题仍然存在,我建议你检查其他与文件上传、保存或处理相关的代码或操作。可能有其他部分的代码导致了文件损坏的问题。
希望能帮到你!如果还有其他问题,请随时提问。
相关问题
watch_folder = r'D:/zip' upload_url = 'http://192.168.1.231:6060/dz' def upload_file(file_path): with open(file_path, 'rb') as file: files = {'file': file} response = requests.post(upload_url, files=files) print(f"Uploaded {file_path}: {response.status_code}") def delete_file(file_path): os.remove(file_path) print(f"Deleted {file_path}") def monitor_folder(): files = set() while True: current_files = set(os.listdir(watch_folder)) new_files = current_files - files for file in new_files: file_path = os.path.join(watch_folder, file) upload_file(file_path) delete_file(file_path) files = current_files time.sleep(15) if __name__ == "__main__": monitor_folder() 这段代码一段时间没有接收到连接会报错, raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.231', port=6060): Max retries exceeded with url: /dz (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001915C2540F0>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。',)) 如何改代码可以在没有接收到连接时一直等待,而不是报错中断程序
要在没有接收到连接时一直等待而不报错中断程序,您可以使用 `try-except` 块来捕获连接错误,并在捕获到错误时进行延迟重试。下面是修改后的代码示例:
```python
import os
import time
import requests
watch_folder = r'D:/zip'
upload_url = 'http://192.168.1.231:6060/dz'
def upload_file(file_path):
with open(file_path, 'rb') as file:
files = {'file': file}
response = requests.post(upload_url, files=files)
print(f"Uploaded {file_path}: {response.status_code}")
def delete_file(file_path):
os.remove(file_path)
print(f"Deleted {file_path}")
def monitor_folder():
files = set()
while True:
current_files = set(os.listdir(watch_folder))
new_files = current_files - files
for file in new_files:
file_path = os.path.join(watch_folder, file)
try:
upload_file(file_path)
delete_file(file_path)
except requests.exceptions.ConnectionError as e:
print(f"Connection error: {e}")
time.sleep(15) # 等待一段时间后重试
files = current_files
time.sleep(15)
if __name__ == "__main__":
monitor_folder()
```
在修改后的代码中,当捕获到 `ConnectionError` 异常时,会打印错误消息并等待一段时间后重试上传。这样可以避免报错中断程序,并持续等待连接恢复。
from PIL import Image import os import numpy as np input_folder = 'D://with ground truth/train/disp' # 输入文件夹路径 output_folder = 'D://with ground truth/train/disp2' # 输出文件夹路径 if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(input_folder): if filename.endswith('.tif') or filename.endswith('.tiff'): # 仅对tif或tiff格式的文件进行转换 with Image.open(os.path.join(input_folder, filename)) as im: im.save(os.path.join(output_folder, os.path.splitext(filename)[0] + '.png'))报错raise OSError(msg) from e OSError: cannot write mode F as PNG
这个错误通常会出现在尝试以模式 "F" 保存 PNG 图像时。模式 "F" 表示浮点数像素,但 PNG 格式不支持浮点数像素。因此,你需要将图像转换为支持的模式(例如 "RGB" 或 "RGBA")才能将其保存为 PNG。以下是一个示例代码片段,可以将图像转换为 "RGB" 模式并保存为 PNG:
```
from PIL import Image
import os
import numpy as np
input_folder = 'D://with ground truth/train/disp' # 输入文件夹路径
output_folder = 'D://with ground truth/train/disp2' # 输出文件夹路径
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.endswith('.tif') or filename.endswith('.tiff'): # 仅对tif或tiff格式的文件进行转换
with Image.open(os.path.join(input_folder, filename)) as im:
# 将图像转换为 "RGB" 模式
im = im.convert("RGB")
# 保存为 PNG
im.save(os.path.join(output_folder, os.path.splitext(filename)[0] + '.png'))
```
如果你仍然遇到问题,请提供完整的错误消息。
阅读全文