2013-03-11 3 views
0

Мой код заключается в следующем:file.open не работает так, как я думал, что это должно

self.data = open("/myData", "a") 
self.data.close() 

self.data = open ("myData", "r") 


    self.master = Tk()  
    if (self.data.read()is not None): 
     print 2 
     print self.data.readlines() 
     print 1 

Я обычно получаю пустой печать между 2 и один.

Я точно знаю, что в myData есть что-то написанное. Я пробовал другие методы открытия MyData, такие как

self.data = open ("/myData", "r") 

, который дает мне «разрешение отказано» (да, у меня есть чтение и запись прав на этот файл, я проверил, что)

и

self.data = open ("/game-engineering/myData", "r") 

, который дает мне «файл не найден».

Я делаю какую-то глупую ошибку пути? Я точно знаю, что файл не пуст, я вижу, что там, если я открываю его вручную.

+2

Если путь имеет префикс «/», это означает, что это * абсолютный * путь, что означает, что он разрешен, начиная с корня файловой системы. Думаю, ты этого не хочешь! Поэтому просто удалите ведущий «/». –

+0

Это была моя первая попытка. Это тоже не сработало. – newnewbie

+0

Возможно, ваш текущий рабочий каталог неверен. Проверьте с помощью 'os.path.getcwd()'. Альтернативой является объяснение, что, несмотря на то, что вы сказали о разрешениях, вы фактически используете Python в качестве некоторого менее привилегированного пользователя. –

ответ

3

Когда вы вызываете read, вы «уничтожаете» файл (курсор перемещается в конец файла). Поэтому, когда он вызывается readlines, он сразу же попадает в EOF, и такой возвращает пустой список.

В большинстве случаев (с линиями чтения) вы можете просто использовать его напрямую, потому что, если файл пуст, вы получите пустой список, так что вы никогда не войдете в итерацию.

+0

Большое спасибо, это сделал трюк. – newnewbie

Смежные вопросы