gpt4 book ai didi

python - 如何正确处理 C 中的文件读/写错误?

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:30 31 4
gpt4 key购买 nike

我想重写yEnc使用 Visual Studio 2008 使其可在 Win32 上编译的代码。

问题是 yEnc 使用 unistd.h (UNIX) 函数 fcntl 来检查文件是否可读或可写。它当然与 MS Visual Studio 不兼容。

这是我要删除的内容:

static Bool writable(FILE *file)
{
int mode = fcntl(fileno(file),F_GETFL) & O_ACCMODE;
return (mode == O_WRONLY) || (mode == O_RDWR);
}

static Bool readable(FILE *file)
{
int mode = fcntl(fileno(file),F_GETFL) & O_ACCMODE;
return (mode == O_RDONLY) || (mode == O_RDWR);
}

它的名字是这样的:

FILE* infile = PyFile_AsFile(Py_infile);
FILE* outfile = PyFile_AsFile(Py_outfile);

if(!readable(infile) || !writable(outfile) ) {
return PyErr_Format(PyExc_ValueError, "file objects not writeable/readable");
}

/* File stuff including */
fread(&read_buffer, 1, in_ind, infile);
if(ferror(infile) || ferror(outfile)) {
return PyErr_Format(PyExc_IOError, "I/O Error while encoding");
}
fputc(CR, outfile);
fputc(LF, outfile);
fflush(outfile);
/* End of file stuff */

谁能帮我转换这个可读/可写检查(用 try {} catch {} 代替)?

我相信处理文件读/写错误比尝试了解 Windows 文件是否可读/可写更容易,因为似乎没有简单的 Windows 等效于 fcntl/F_GETFL。

解决方案似乎并不复杂,但由于我是 C 和 Python 的新手,我不想冒险制作有问题的异常处理程序。

感谢您的帮助。

最佳答案

您不必转换它只需安装 windows POSIX。 http://www.cygwin.com/

关于python - 如何正确处理 C 中的文件读/写错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264526/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com