2017-10-18 17 views
0

Pythonでいくつかの値をとり、ディレクトリを作成して後で使用するためにテキストファイルに追加しようとしました。私はubuntu VPSサーバーにアップロードしました。後で私のWebサイトで使用するつもりです。私は(下)のコードを実行するたびにしかし、私は次のエラーを取得する:Linuxサーバ/ Python:OSError:[Errno 13]アクセスが拒否されました

Traceback (most recent call last): 
    File "fileCreator.py", line 13, in <module> 
    os.mkdir(dirName) 
OSError: [Errno 13] Permission denied: 'just-a-test' 

Pythonのコード:

#!/usr/src 
import os 
from distutils.dir_util import copy_tree 
import sys 

title = raw_input("Blog Title: ") 
dirName = title.replace(" ", "-").lower() 

if os.path.isdir(dirName): 
    print("Error: Directory Exists") 
    sys.exit() 
else: 
    os.mkdir(dirName) 

copy_tree("page", dirName) 

def assignment(title, dirName): 
    desc = raw_input("Article Description: ") 

    fo = open(dirName + "/txt-files/title.txt", "w") 
    fo.write(title) 
    fo.close() 

    fo = open(dirName + "/txt-files/desc.txt", "w") 
    fo.write(desc) 
    fo.close() 

    return None 

assignment(title, dirName) 
print("Done") 

これは、アクセス権のエラーのいくつかの並べ替えだと私はそれにはいくつかの他のトピックを見てきましたいずれも解決策には至っていません。私はあまりにもLinuxのコマンドに堪能ではないので、裸で!本当に助けに感謝しますか?

+0

印刷デバッグのための現在の作業ディレクトリを。 'os.getcwd()' – harandk

+0

制限された環境のファイルシステムリソースを管理するために、問題やコードを減らしてください。回答と関連する質問から学びます。 –

+0

@SaschaGottfriedどういう意味ですか? –

答えて

1

TLDR;あなたのPythonスクリプトでディレクトリにchmod 744を実行してください。

フォルダを作成しようとしているディレクトリに対して正しいアクセス許可がありません。あなたはfileCreator.pyを持っている同じディレクトリから、コマンドラインでls -la .を実行し、それが出力されます。このような何か:

drwxr-xr-x 9 user staff 306 Oct 9 21:29 . 
drwxr-xr-x+ 36 user staff 1224 Sep 28 12:26 .. 
-rw-r--r-- 1 user staff 977 Oct 9 21:04 .bashrc 

そしておそらく他のファイルの束。最初の行はカレントディレクトリです。 userはログインし、staffはそれを所有するグループです。彼らはあなたのシステム上で異なるでしょう。 drwxr-xr-xはアクセス許可で、chmodコマンドで変更されます。

ここでは、Linuxの権限の詳細をチェックアウト:https://www.linux.com/learn/understanding-linux-file-permissions

+0

ああ、これは素晴らしく、ありがとうございます。私はこれまでにディレクトリのユーザーが何かを変えるかどうかをチェックしようとしましたが、744はとても感謝しています! –

0
import os 

def create_assignment_directory(path): 
    """ 
    create given path in local filesystem 
    given path can be a relative, absolute path or 
    path using tilde symbols like '~/folder_in_home_directory' 

    prints absolute, normalized path for debugging purposes  
    """ 
    expanded_path = os.path.expanduser(path) 
    normalized_path = os.path.abspath(expanded_path) 

    print("create directory {0}".format(normalized_path)) 
    try: 
     os.mkdir(expanded_path) 
    except OSError as e: 
     if e.errno == 17: # errno.EEXIST 
      print("directory {0} already exists.".format(normalized_path)) 
    else: 
     print("successfully created directory {0}".format(normalized_path)) 

print("current working directory {0}".format(os.getcwd())) 
create_assignment_directory("just-a-test") 
create_assignment_directory("~/just-a-test") 
create_assignment_directory("/tmp/just-a-test") 
関連する問題