You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIX系统下Python无法在CIFS挂载磁盘创建文件求助

Python OSError: Errno 22 Invalid Argument When Creating File on CIFS Mount in AIX

我尝试用以下Python代码在AIX系统的CIFS挂载磁盘上创建文件时,遇到了OSError: [Errno 22] Invalid argument错误。相同代码在本地路径可以正常运行,而且通过Bash命令也能在该挂载路径下创建文件,麻烦帮忙排查解决:

#!/usr/bin/python
import os
import sys
f=open("/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt","w+")

环境详情

挂载信息

磁盘clsfs038:/Bank_statements挂载至/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements,挂载类型为cifs。

磁盘使用情况(df命令输出)

[inform@xxx/inform ] $ df
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd10opt     1966080    380432   81%     15329    24% /opt
/dev/livedump      65536     64864    2%         4     1% /var/adm/ras/livedump
/dev/informlv 1257766912 662083576   48%    425081     1% /inform
clsfs038:/Bank_statements
              2576863224  393165352   85%         0     0% /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements

目录权限(ls -la命令输出)

[inform@xxx /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements ] $ ls -la
total 184
drwxrwxr-x   1 inform inform     16384 Dec 19 16:44 .
drwxr-xr-x  19 inform inform     32768 Dec 18 17:16 ..
drwxrwxr-x   1 inform inform     16384 Dec 19 14:08 load
drwxrwxr-x   1 inform inform     16384 Dec 19 10:37 statement
-rwxrwxr-x   1 inform inform         0 Nov 22 12:26 testfile
-rwxrwxr-x   1 inform inform         0 Dec 18 13:06 testfile2

挂载参数(mount命令输出片段)

clsfs038  /Bank_statements /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements cifs Nov 22 12:27 rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF

权限检测结果

自定义检测脚本显示目标目录/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement具备读写权限,但未创建的目标文件权限检测返回False。


可能的解决方案

1. 调整CIFS挂载参数

AIX的CIFS客户端和Python文件操作在Unix属性映射上可能存在兼容性问题,尝试添加nounix参数重新挂载,禁用Unix风格的权限和属性转换:

umount /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements
mount -v -t cifs //clsfs038/Bank_statements /inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements -o rw,uid=482,gid=482,fmode=775,wrkgrp=RCCF,nounix

2. 使用底层os.open替代内置open

Python内置open函数的封装逻辑在网络文件系统上可能有冲突,试试用更底层的os.open创建文件:

#!/usr/bin/python
import os

file_path = "/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt"
# 手动指定创建/写入标志和文件权限
fd = os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o775)
with os.fdopen(fd, 'w+') as f:
    # 执行文件操作
    pass

3. 先通过Shell创建文件再读写

既然Bash能正常创建文件,可先通过subprocess调用touch创建空文件,再用Python打开:

#!/usr/bin/python
import subprocess

file_path = "/inform/app/Informatica/10.1.0/server/infa_shared/TgtFiles/bank_statements/statement/guru99.txt"
subprocess.run(['touch', file_path], check=True)
with open(file_path, 'w+') as f:
    # 执行文件操作
    pass

4. 排查版本兼容性问题

如果使用的是较老的Python 2.x版本,尝试切换到Python 3.x测试;同时检查AIX的CIFS客户端是否有可用的补丁更新,部分旧版本客户端存在文件系统交互bug。

内容的提问来源于stack exchange,提问作者chiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:17:54