Подтвердить что ты не робот

Требуется целое число? открытый()

У меня очень простой python script, который должен проверять текстовый файл, содержащий строки, отформатированные как id = 'value', и помещать их в dict. модуль python называется chval.py, а входной файл - in.txt. здесь код:

import os,sys
from os import *
from sys import *

vals = {}

f = open(sys.argv[1], 'r')

for line in val_f:
    t = line.split('=')
    t[1].strip('\'')
    vals.append(t[0], t[1])

print vals

f.close()

когда я пытаюсь запустить его, я получаю:

Traceback (последний последний звонок):
Файл "chval.py", строка 9, в?     f = open (sys.argv [1], 'r') TypeError: требуется целое число

Я использую python 2.4... потому что мне было предложено не использовать ничего более нового, есть ли что-то об open(), о котором я не знаю? Почему он хочет целое число?

что-нибудь после этой строки не проверено. вкратце: почему это дает мне ошибку и как ее исправить?

4b9b3361

Ответ 1

Поскольку вы сделали from os import *, вы (accidenally) используете os.open, который действительно требует целочисленного флага вместо текстового "r" или "w". Выньте эту строку, и вы преодолеете эту ошибку.

Ответ 2

Не делайте import * from wherever без уважительной причины (и их не так много).

Ваш код подбирает функцию os.open() вместо встроенной функции open(). Если вы действительно хотите использовать os.open(), выполните import os, затем вызовите os.open(....). Независимо от того, что вы хотите вызвать, прочитайте документацию о том, какие аргументы она требует.

Ответ 3

Также следует отметить, что начиная с Python 2.6 встроенная функция open() теперь является псевдонимом для функции io.open(). Было даже рассмотрено удаление встроенного open() в Python 3 и требование использования io.open, чтобы избежать случайных конфликтов пространства имен, возникающих в результате таких вещей, как "from blah import *". В Python 2.6+ вы можете написать (и также можете считать этот стиль хорошей практикой):

import io
filehandle = io.open(sys.argv[1], 'r')

Ответ 4

Предоставив эти параметры, разрешили мою проблему:

    with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)

Ответ 5

Из http://www.tutorialspoint.com/python/os_open.htm вы также можете сохранить свой импорт и использовать

file = os.open( "foo.txt", режим)

и режим может быть:

os.O_RDONLY: open for reading only
os.O_WRONLY: open for writing only
os.O_RDWR : open for reading and writing
os.O_NONBLOCK: do not block on open
os.O_APPEND: append on each write
os.O_CREAT: create file if it does not exist
os.O_TRUNC: truncate size to 0
os.O_EXCL: error if create and file exists
os.O_SHLOCK: atomically obtain a shared lock
os.O_EXLOCK: atomically obtain an exclusive lock
os.O_DIRECT: eliminate or reduce cache effects
os.O_FSYNC : synchronous writes
os.O_NOFOLLOW: do not follow symlinks