0

我在Google App Engine中看到一種奇怪而令人沮喪的行爲。我從這樣的特定文件夾啓動谷歌應用程序引擎:(dev_appserver。)在這個文件夾中,我有一個名爲數據的文件夾下有幾個子文件夾(其中之一是包含文件temp.json的json_folder)。從包含MainHandler類我主要蟒蛇的src裏面我這樣做:谷歌應用程序引擎os.path功能不起作用

print os.getcwd(), os.path.isfile("data/json_folder/temp.json") 

它打印出預期的CWD並且即使json_folder/temp.json存在和假,如果我從同一目錄啓動常規的Python殼它正確地打印真實。爲什麼它在普通Python中工作,但不在GAE python中?

我也試過以下。我瀏覽了當前目錄,並列出了數據下的子文件夾,但即使對於目錄,isdir()也會返回false!爲什麼蟒蛇認爲他們不是目錄? LS -al顯示他們是目錄,它是沒有意義: (此打印json_folder,作爲輸出中的一個,所有子文件夾都返回false假):

for root, dirs, files in os.walk("data"): 
    for file in files: 
     print file, os.path.isdir(file) 

回答

0

您需要os.path.join的路徑,它的工作原理,如果您只使用cwd中的文件,因爲您與文件位於同一目錄中,一旦您擊中了cwd外部的文件夾,您將檢查該外部目錄中的文件是否是cwd中的文件,那麼您還需要檢查isfile對於文件:

print file, os.path.isfile(os.path.join(root, file)) 

如果你想檢查目錄你需要迭代目錄s沒有文件:

for root, dirs, files in os.walk("data"): 
    for _dir in dirs: 
      print _dir, os.path.isdir(os.path.join(root, _dir) 
+0

我還是不明白它爲什麼在一個普通的python shell中工作。使用我現在做了一個解決方法。 – user3079275