初次提交
This commit is contained in:
90
backend/test_direct_write.py
Normal file
90
backend/test_direct_write.py
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
直接测试文件写入,绕过所有业务逻辑
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
def test_direct_write():
|
||||
"""直接测试文件写入"""
|
||||
|
||||
print("=== 直接文件写入测试 ===")
|
||||
|
||||
# 测试内容
|
||||
test_content = b"Direct write test content - bypassing all logic"
|
||||
|
||||
# 文件路径
|
||||
file_path = "uploads/direct_test_write.txt"
|
||||
|
||||
print(f"测试内容大小: {len(test_content)} bytes")
|
||||
print(f"目标路径: {os.path.abspath(file_path)}")
|
||||
|
||||
# 确保目录存在
|
||||
os.makedirs("uploads", exist_ok=True)
|
||||
|
||||
# 方法1: 使用 open 直接写入
|
||||
print("\n--- 方法1: 直接 open 写入 ---")
|
||||
try:
|
||||
with open(file_path, "wb") as f:
|
||||
written = f.write(test_content)
|
||||
f.flush()
|
||||
os.fsync(f.fileno())
|
||||
print(f"写入字节数: {written}")
|
||||
|
||||
if os.path.exists(file_path):
|
||||
size = os.path.getsize(file_path)
|
||||
print(f"文件大小: {size} bytes")
|
||||
|
||||
if size == len(test_content):
|
||||
print("✅ 方法1成功!")
|
||||
else:
|
||||
print(f"❌ 方法1失败: 大小不匹配 {size} != {len(test_content)}")
|
||||
else:
|
||||
print("❌ 方法1失败: 文件不存在")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 方法1异常: {e}")
|
||||
|
||||
# 方法2: 使用 Path 写入
|
||||
print("\n--- 方法2: 使用 pathlib.Path 写入 ---")
|
||||
from pathlib import Path
|
||||
file_path2 = "uploads/path_test_write.txt"
|
||||
|
||||
try:
|
||||
Path(file_path2).write_bytes(test_content)
|
||||
|
||||
if os.path.exists(file_path2):
|
||||
size = os.path.getsize(file_path2)
|
||||
print(f"文件大小: {size} bytes")
|
||||
|
||||
if size == len(test_content):
|
||||
print("✅ 方法2成功!")
|
||||
else:
|
||||
print(f"❌ 方法2失败: 大小不匹配 {size} != {len(test_content)}")
|
||||
else:
|
||||
print("❌ 方法2失败: 文件不存在")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 方法2异常: {e}")
|
||||
|
||||
# 方法3: 检查现有文件
|
||||
print("\n--- 方法3: 检查现有损坏的文件 ---")
|
||||
existing_files = [f for f in os.listdir("uploads") if f.endswith('.txt')]
|
||||
print(f"现有文本文件: {existing_files}")
|
||||
|
||||
for filename in existing_files[:3]: # 只检查前3个
|
||||
file_path = os.path.join("uploads", filename)
|
||||
try:
|
||||
size = os.path.getsize(file_path)
|
||||
print(f"{filename}: {size} bytes")
|
||||
|
||||
if size > 0:
|
||||
with open(file_path, 'rb') as f:
|
||||
content = f.read(min(100, size))
|
||||
print(f" 内容预览: {content}")
|
||||
|
||||
except Exception as e:
|
||||
print(f" 读取错误: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_direct_write()
|
||||
Reference in New Issue
Block a user