Python mkdir giving me wrong permissions

前端 未结 4 1284
感情败类
感情败类 2021-01-11 17:14

I\'m trying to create a folder and create a file within it.

Whenever i create that folder (via Python), it creates a folder that gives me no permissions at all and r

相关标签:
4条回答
  • 2021-01-11 17:56

    The Python manual says:

    os.mkdir(path[, mode])
    

    Create a directory named path with numeric mode mode. The default mode is 0777 (octal). On some systems, mode is ignored. Where it is used, the current umask value is first masked out. Availability: Unix, Windows.

    Have you specified a mode - which mode did you specify. Did you consider specifying a mode explicitly? And what is the program's umask value set to"

    0 讨论(0)
  • 2021-01-11 18:00

    Since your on Windows, this might be a crapshoot. Make sure there aren't any wacky special permissions on the parent directory or with the policy settings that defines the permissions any directories created by your account get. I doubt this is a python problem as I haven't been able to recreate the problem on Windows with a relatively vanilla Vista install.

    0 讨论(0)
  • 2021-01-11 18:16

    After you create the folder you can set the permissions with os.chmod

    The mod is written in base 8, if you convert it to binary it would be

    000 111 111 000
        rwx rwx rwx
    

    The first rwx is for owner, the second is for the group and the third is for world

    r=read,w=write,x=execute

    The permissions you see most often are
    7 read/write/execute - you need execute for directories to see the contents
    6 read/write
    4 readonly

    When you use os.chmod it makes most sense to use octal notation so

    os.chmod('myfile',0o666)  # read/write by everyone
    os.chmod('myfile',0o644)  # read/write by me, readable for everone else
    

    Remember I said you usually want directories to be "executable" so you can see the contents.

    os.chmod('mydir',0o777)  # read/write by everyone
    os.chmod('mydir',0o755)  # read/write by me, readable for everone else
    

    Note: The syntax of 0o777 is for Python 2.6 and 3+. otherwise for the 2 series it is 0777. 2.6 accepts either syntax so the one you choose will depend on whether you want to be forward or backward compatible.

    0 讨论(0)
  • 2021-01-11 18:21

    You've probably got a funky umask. Try os.umask(0002) before making your directory.

    0 讨论(0)
提交回复
热议问题