Это бит-бит, чтобы объяснить статическое ключевое слово для всех новичков. Вы узнаете это, когда будете работать больше с Классами и Объектами.
| * | Static: Статические элементы могут быть вызваны с именем класса. Если вы наблюдаете в кодах, некоторые функции вызываются непосредственно с именами классов, такими как
NamCls.NamFnc();
System.out.println();
. Это потому, что NamFnc и println будут объявленный с использованием ключевого слова static перед ними.
| * | Non Static: Нестатические элементы могут быть вызваны с помощью переменной класса. Если ее не статично, вам нужна переменная класса, поместите точку после переменной класса и затем вызовите функцию.
NamCls NamObjVar = new NamCls();
NamObjVar.NamFnc();
Ниже код объясняет вам аккуратно
| * | Статическая и нестатическая функция в классе:
public class NamCls
{
public static void main(String[] args)
{
PlsPrnFnc("Tst Txt");
NamCls NamObjVar = new NamCls();
NamObjVar.PrnFnc("Tst Txt");
}
static void PlsPrnFnc(String SrgPsgVal)
{
System.out.println(SrgPsgVal);
}
void PrnFnc(String SrgPsgVal)
{
System.out.println(SrgPsgVal);
}
}
| * | Статический и нестатический класс внутри класса:
public class NamCls
{
public static void main(String[] args)
{
NamTicCls NamTicVaj = new NamTicCls();
NamTicVaj.PrnFnc("Tst Txt");
NamCls NamObjVar = new NamCls();
NamNicCls NamNicVar = NamObjVar.new NamNicCls();
NamNicVar.PrnFnc("Tst Txt");
}
static class NamTicCls
{
void PrnFnc(String SrgPsgVal)
{
System.out.println(SrgPsgVal);
}
}
class NamNicCls
{
void PrnFnc(String SrgPsgVal)
{
System.out.println(SrgPsgVal);
}
}
}
Поскольку вы сделали from os import *
, вы (accidenally) используете os.open, который действительно требует целочисленного флага вместо текстового «r» или «w». Выньте эту строку, и вы преодолеете эту ошибку.
Предоставление этих параметров разрешило мою проблему:
with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)
Не делайте import * from wherever
без уважительной причины (и их немного).
Ваш код подбирает функцию os.open () вместо встроенного open ( ). Если вы действительно хотите использовать os.open (), выполните import os
, затем вызовите os.open(....)
. Независимо от того, что вы хотите вызвать, прочитайте документацию о том, какие аргументы она требует.
Из 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
Также следует отметить, что начиная с 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')