Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python授予读取/写入文件的完全权限_Python_Linux_File_Pid - Fatal编程技术网

Python授予读取/写入文件的完全权限

Python授予读取/写入文件的完全权限,python,linux,file,pid,Python,Linux,File,Pid,在使用Python(3.8.0)时,我试图在/var/run目录中创建一个PID文件。在输入时,我需要创建文件,在退出时,我需要删除文件 class PIDFile(object): def __init__(self, filename='pidfileCreated.pid'): self._file = os.path.join("/var/run", filename) def __enter__(self): with open(se

在使用Python(3.8.0)时,我试图在/var/run目录中创建一个PID文件。在输入时,我需要创建文件,在退出时,我需要删除文件

class PIDFile(object):
    def __init__(self, filename='pidfileCreated.pid'):
        self._file = os.path.join("/var/run", filename)

    def __enter__(self):

        with open(self._file, "w") as f:
            f.write(str(os.getpid()))
            f.close()
            os.chmod(self._file, 0o777)

        return self

    def __exit__(self, *args):
        if os.path.exists(self._file):
            try:
                os.remove(self._file)
            except OSError:
                pass
但我得到了一个错误-

with open(self._file, "w") as f:
PermissionError: [Errno 13] Permission denied: '/var/run/pidfileCreated.pid'

您是否使用命令行运行Python可执行文件?如果没有,请尝试使用root权限使用命令行运行。我认为不使用root权限就不可能创建
/var/run
,因为这样会产生安全问题。例如,可以使用与强制替换参数同名的文件夹/文件替换现有文件夹/文件。

是否使用命令行运行Python可执行文件?如果没有,请尝试使用root权限使用命令行运行。我认为不使用root权限就不可能创建
/var/run
,因为这样会产生安全问题。例如,可以使用与强制替换参数同名的文件夹/文件替换现有文件夹/文件。

通常,只有root用户可以在/var/run中创建/删除文件。你是在寻求一种方法来避免这种情况吗?为什么?我需要为我的服务创建/访问/删除PID文件,该文件由这个Python脚本执行。存储PID文件的建议位置是“/var/run”文件夹。如果不是,请给出建议。你能接受/var/run子文件夹而不是直接在其中吗?我认为拥有子文件夹不会有问题。但是,当我在上面的代码中使用“/var/run/tmp”时,会出现错误“没有这样的文件或目录:”/var/run/tmp/pidfileCreated.pid”“,这是因为您需要首先将
/var/run/tmp
设为root用户。通常,只有root用户才能在/var/run中创建/删除文件。你是在寻求一种方法来避免这种情况吗?为什么?我需要为我的服务创建/访问/删除PID文件,该文件由这个Python脚本执行。存储PID文件的建议位置是“/var/run”文件夹。如果不是,请给出建议。你能接受/var/run子文件夹而不是直接在其中吗?我认为拥有子文件夹不会有问题。但是,当我在上面的代码中使用“/var/run/tmp”时,会出现错误“没有这样的文件或目录:'/var/run/tmp/pidfileCreated.pid'”,这是因为需要首先将
/var/run/tmp
设为根目录。