PySide6.QtCore.QTextStream¶
- class QTextStream¶
- The - QTextStreamclass provides a convenient interface for reading and writing text. More…- Synopsis¶- Methods¶- def - __init__()
- def - atEnd()
- def - device()
- def - encoding()
- def - fieldAlignment()
- def - fieldWidth()
- def - flush()
- def - integerBase()
- def - locale()
- def - numberFlags()
- def - __lshift__()
- def - __rshift__()
- def - padChar()
- def - pos()
- def - read()
- def - readAll()
- def - readLine()
- def - readLineInto()
- def - reset()
- def - resetStatus()
- def - seek()
- def - setDevice()
- def - setEncoding()
- def - setFieldWidth()
- def - setIntegerBase()
- def - setLocale()
- def - setNumberFlags()
- def - setPadChar()
- def - setStatus()
- def - skipWhiteSpace()
- def - status()
- def - string()
 - Note - This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE - Detailed Description¶- Warning - This section contains snippets that were automatically translated from C++ to Python and may contain errors. - QTextStreamcan operate on a- QIODevice, a- QByteArrayor a- QString. Using- QTextStream‘s streaming operators, you can conveniently read and write words, lines and numbers. For generating text,- QTextStreamsupports formatting options for field padding and alignment, and formatting of numbers. Example:- data = QFile("output.txt") if data.open(QFile.WriteOnly | QFile.Truncate): out = QTextStream(data) out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7 # writes "Result: 3.14 2.7 " - It’s also common to use - QTextStreamto read console input and write console output.- QTextStreamis locale aware, and will automatically decode standard input using the correct encoding. Example:- stream = QTextStream(stdin) line = QString() while stream.readLineInto(line): ... - Besides using - QTextStream‘s constructors, you can also set the device or string- QTextStreamoperates on by calling- setDevice()or- setString(). You can seek to a position by calling- seek(), and- atEnd()will return true when there is no data left to be read. If you call- flush(),- QTextStreamwill empty all data from its write buffer into the device and call- flush()on the device.- Internally, - QTextStreamuses a Unicode based buffer, and- QStringConverteris used by- QTextStreamto automatically support different encodings. By default, UTF-8 is used for reading and writing, but you can also set the encoding by calling- setEncoding(). Automatic Unicode detection is also supported. When this feature is enabled (the default behavior),- QTextStreamwill detect the UTF-8, UTF-16 or the UTF-32 BOM (Byte Order Mark) and switch to the appropriate UTF encoding when reading.- QTextStreamdoes not write a BOM by default, but you can enable this by calling- setGenerateByteOrderMark(true). When- QTextStreamoperates on a- QStringdirectly, the encoding is disabled.- There are three general ways to use - QTextStreamwhen reading text files:- Chunk by chunk, by calling - readLine()or- readAll().
- Word by word. - QTextStreamsupports streaming into- QStrings,- QByteArrays and char* buffers. Words are delimited by space, and leading white space is automatically skipped.
- Character by character, by streaming into - QCharor char types. This method is often used for convenient input handling when parsing files, independent of character encoding and end-of-line semantics. To skip white space, call- skipWhiteSpace().
 - Since the text stream uses a buffer, you should not read from the stream using the implementation of a superclass. For instance, if you have a - QFileand read from it directly using- readLine()instead of using the stream, the text stream’s internal position will be out of sync with the file’s position.- By default, when reading numbers from a stream of text, - QTextStreamwill automatically detect the number’s base representation. For example, if the number starts with “0x”, it is assumed to be in hexadecimal form. If it starts with the digits 1-9, it is assumed to be in decimal form, and so on. You can set the integer base, thereby disabling the automatic detection, by calling- setIntegerBase(). Example:- in = QTextStream("0x50 0x20") firstNumber, = int() in >> firstNumber # firstNumber == 80 in >> dec >> secondNumber # secondNumber == 0 ch = char() in >> ch # ch == 'x' - QTextStreamsupports many formatting options for generating text. You can set the field width and pad character by calling- setFieldWidth()and- setPadChar(). Use- setFieldAlignment()to set the alignment within each field. For real numbers, call- setRealNumberNotation()and- setRealNumberPrecision()to set the notation (- SmartNotation,- ScientificNotation,- FixedNotation) and precision in digits of the generated number. Some extra number formatting options are also available through- setNumberFlags().- Like - <iostream>in the standard C++ library,- QTextStreamalso defines several global manipulator functions:- In addition, Qt provides three global manipulators that take a parameter: - qSetFieldWidth(),- qSetPadChar(), and- qSetRealNumberPrecision().- See also - class RealNumberNotation¶
- This enum specifies which notations to use for expressing - floatand- doubleas strings.- Constant - Description - QTextStream.ScientificNotation - Scientific notation ( - printf()'s- %eflag).- QTextStream.FixedNotation - Fixed-point notation ( - printf()'s- %fflag).- QTextStream.SmartNotation - Scientific or fixed-point notation, depending on which makes most sense ( - printf()'s- %gflag).- See also 
 - class FieldAlignment¶
- This enum specifies how to align text in fields when the field is wider than the text that occupies it. - Constant - Description - QTextStream.AlignLeft - Pad on the right side of fields. - QTextStream.AlignRight - Pad on the left side of fields. - QTextStream.AlignCenter - Pad on both sides of field. - QTextStream.AlignAccountingStyle - Same as AlignRight, except that the sign of a number is flush left. - See also 
 - class Status¶
- This enum describes the current status of the text stream. - Constant - Description - QTextStream.Ok - The text stream is operating normally. - QTextStream.ReadPastEnd - The text stream has read past the end of the data in the underlying device. - QTextStream.ReadCorruptData - The text stream has read corrupt data. - QTextStream.WriteFailed - The text stream cannot write to the underlying device. - See also 
 - class NumberFlag¶
- (inherits - enum.Flag) This enum specifies various flags that can be set to affect the output of integers,- floats, and- doubles.- Constant - Description - QTextStream.ShowBase - Show the base as a prefix if the base is 16 (“0x”), 8 (“0”), or 2 (“0b”). - QTextStream.ForcePoint - Always put the decimal separator in numbers, even if there are no decimals. - QTextStream.ForceSign - Always put the sign in numbers, even for positive numbers. - QTextStream.UppercaseBase - Use uppercase versions of base prefixes (“0X”, “0B”). - QTextStream.UppercaseDigits - Use uppercase letters for expressing digits 10 to 35 instead of lowercase. - See also 
 - __init__()¶
 - Constructs a - QTextStream. Before you can use it for reading or writing, you must assign a device or a string.- See also - setDevice()- setString()- __init__(device)
- Parameters:
- device – - QIODevice
 
 - Constructs a - QTextStreamthat operates on- device.- __init__(array[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite])
- Parameters:
- array – - QByteArray
- openMode – Combination of - OpenModeFlag
 
 
 - Constructs a - QTextStreamthat operates on- array, using- openModeto define the open mode. Internally, the array is wrapped by a- QBuffer.- atEnd()¶
- Return type:
- bool 
 
 - Returns - trueif there is no more data to be read from the- QTextStream; otherwise returns- false. This is similar to, but not the same as calling- atEnd(), as- QTextStreamalso takes into account its internal Unicode buffer.- autoDetectUnicode()¶
- Return type:
- bool 
 
 - Returns - trueif automatic Unicode detection is enabled, otherwise returns- false. Automatic Unicode detection is enabled by default.- See also - Returns the current device associated with the - QTextStream, or- Noneif no device has been assigned.- See also - Returns the encoding that is current assigned to the stream. - See also - fieldAlignment()¶
- Return type:
 
 - Returns the current field alignment. - See also - fieldWidth()¶
- Return type:
- int 
 
 - Returns the current field width. - See also - flush()¶
 - Flushes any buffered data waiting to be written to the device. - If - QTextStreamoperates on a string, this function does nothing.- generateByteOrderMark()¶
- Return type:
- bool 
 
 - Returns - trueif- QTextStreamis set to generate the UTF BOM (Byte Order Mark) when using a UTF encoding; otherwise returns- false. UTF BOM generation is set to false by default.- See also - integerBase()¶
- Return type:
- int 
 
 - Returns the current base of integers. 0 means that the base is detected when reading, or 10 (decimal) when generating numbers. - See also - setIntegerBase()- number()- numberFlags()- Returns the locale for this stream. The default locale is C. - See also - numberFlags()¶
- Return type:
- Combination of - NumberFlag
 
 - Returns the current number flags. - __lshift__(ch)¶
- Parameters:
- ch – - QChar
- Return type:
 
 - Writes the character - cto the stream, then returns a reference to the- QTextStream.- See also - __lshift__(s)
- Parameters:
- s – - QLatin1String
- Return type:
 
 - __lshift__(s)
- Parameters:
- s – str 
- Return type:
 
 - This is an overloaded function. - Writes - stringto the stream, and returns a reference to the- QTextStream.- __lshift__(m)
- Parameters:
- Return type:
 
 - __lshift__(ch)
- Parameters:
- ch – int 
- Return type:
 
 - This is an overloaded function. - Converts - cfrom ASCII to a- QChar, then writes it to the stream.- __lshift__(array)
- Parameters:
- array – - QByteArray
- Return type:
 
 - This is an overloaded function. - Writes - arrayto the stream. The contents of- arrayare converted with- fromUtf8().- __lshift__(node)
- Parameters:
- node – - QDomNode
- Return type:
 
 - __lshift__(s)
- Parameters:
- s – str 
- Return type:
 
 - Writes the string - stringto the stream, and returns a reference to the- QTextStream. The string is first encoded using the assigned encoding (the default is UTF-8) before it is written to the stream.- See also - __lshift__(f)
- Parameters:
- f – float 
- Return type:
 
 - This is an overloaded function. - Writes the double - fto the stream.- __lshift__(i)
- Parameters:
- i – int 
- Return type:
 
 - This is an overloaded function. - Writes the signed long - ito the stream.- __lshift__(i)
- Parameters:
- i – int 
- Return type:
 
 - This is an overloaded function. - Writes the unsigned long - ito the stream.- __rshift__(array)¶
- Parameters:
- array – - QByteArray
- Return type:
 
 - This is an overloaded function. - Converts the word to UTF-8, then stores it in - array.- See also - toLatin1()- padChar()¶
- Return type:
- QChar
 
 - Returns the current pad character. - See also - pos()¶
- Return type:
- int 
 
 - Returns the device position corresponding to the current position of the stream, or -1 if an error occurs (e.g., if there is no device or string, or if there’s a device error). - Because - QTextStreamis buffered, this function may have to seek the device to reconstruct a valid device position. This operation can be expensive, so you may want to avoid calling this function in a tight loop.- See also - read(maxlen)¶
- Parameters:
- maxlen – int 
- Return type:
- str 
 
 - Reads at most - maxlencharacters from the stream, and returns the data read as a- QString.- See also - readAll()¶
- Return type:
- str 
 
 - Reads the entire content of the stream, and returns it as a - QString. Avoid this function when working on large files, as it will consume a significant amount of memory.- Calling - readLine()is better if you do not know how much data is available.- See also - readLine([maxlen=0])¶
- Parameters:
- maxlen – int 
- Return type:
- str 
 
 - Reads one line of text from the stream, and returns it as a - QString. The maximum allowed line length is set to- maxlen. If the stream contains lines longer than this, then the lines will be split after- maxlencharacters and returned in parts.- If - maxlenis 0, the lines can be of any length.- The returned line has no trailing end-of-line characters (”\n” or “\r\n”), so calling - trimmed()can be unnecessary.- If the stream has read to the end of the file, readLine() will return a null - QString. For strings, or for devices that support it, you can explicitly test for the end of the stream using- atEnd().- See also - readLineInto(line[, maxlen=0])¶
- Parameters:
- line – str 
- maxlen – int 
 
- Return type:
- bool 
 
 - Reads one line of text from the stream into - line. If- lineis- None, the read line is not stored.- The maximum allowed line length is set to - maxlen. If the stream contains lines longer than this, then the lines will be split after- maxlencharacters and returned in parts.- If - maxlenis 0, the lines can be of any length.- The resulting line has no trailing end-of-line characters (”\n” or “\r\n”), so calling - trimmed()can be unnecessary.- If - linehas sufficient capacity for the data that is about to be read, this function may not need to allocate new memory. Because of this, it can be faster than- readLine().- Returns - falseif the stream has read to the end of the file or an error has occurred; otherwise returns- true. The contents in- linebefore the call are discarded in any case.- See also - realNumberNotation()¶
- Return type:
 
 - Returns the current real number notation. - realNumberPrecision()¶
- Return type:
- int 
 
 - Returns the current real number precision, or the number of fraction digits - QTextStreamwill write when generating real numbers (- FixedNotation,- ScientificNotation), or the maximum number of significant digits (- SmartNotation).- reset()¶
 - Resets - QTextStream‘s formatting options, bringing it back to its original constructed state. The device, string and any buffered data is left untouched.- resetStatus()¶
 - Resets the status of the text stream. - See also - seek(pos)¶
- Parameters:
- pos – int 
- Return type:
- bool 
 
 - Seeks to the position - posin the device. Returns- trueon success; otherwise returns- false.- setAutoDetectUnicode(enabled)¶
- Parameters:
- enabled – bool 
 
 - If - enabledis true,- QTextStreamwill attempt to detect Unicode encoding by peeking into the stream data to see if it can find the UTF-8, UTF-16, or UTF-32 Byte Order Mark (BOM). If this mark is found,- QTextStreamwill replace the current encoding with the UTF encoding.- This function can be used together with - setEncoding(). It is common to set the encoding to UTF-8, and then enable UTF-16 detection.- See also - Sets the current device to - device. If a device has already been assigned,- QTextStreamwill call- flush()before the old device is replaced.- Note - This function resets locale to the default locale (‘C’) and encoding to the default encoding, UTF-8. - See also - device()- setString()- Sets the encoding for this stream to - encoding. The encoding is used for decoding any data that is read from the assigned device, and for encoding any data that is written. By default,- Utf8is used, and automatic unicode detection is enabled.- If - QTextStreamoperates on a string, this function does nothing.- Warning - If you call this function while the text stream is reading from an open sequential socket, the internal buffer may still contain text decoded using the old encoding. - See also - setFieldAlignment(alignment)¶
- Parameters:
- alignment – - FieldAlignment
 
 - Sets the field alignment to - mode. When used together with- setFieldWidth(), this function allows you to generate formatted output with text aligned to the left, to the right or center aligned.- See also - setFieldWidth(width)¶
- Parameters:
- width – int 
 
 - Sets the current field width to - width. If- widthis 0 (the default), the field width is equal to the length of the generated text.- Note - The field width applies to every element appended to this stream after this function has been called (e.g., it also pads endl). This behavior is different from similar classes in the STL, where the field width only applies to the next element. - See also - setGenerateByteOrderMark(generate)¶
- Parameters:
- generate – bool 
 
 - If - generateis true and a UTF encoding is used,- QTextStreamwill insert the BOM (Byte Order Mark) before any data has been written to the device. If- generateis false, no BOM will be inserted. This function must be called before any data is written. Otherwise, it does nothing.- See also - generateByteOrderMark()- bom()- setIntegerBase(base)¶
- Parameters:
- base – int 
 
 - Sets the base of integers to - base, both for reading and for generating numbers.- basecan be either 2 (binary), 8 (octal), 10 (decimal) or 16 (hexadecimal). If- baseis 0,- QTextStreamwill attempt to detect the base by inspecting the data on the stream. When generating numbers,- QTextStreamassumes base is 10 unless the base has been set explicitly.- See also - integerBase()- number()- setNumberFlags()- Sets the locale for this stream to - locale. The specified locale is used for conversions between numbers and their string representations.- The default locale is C and it is a special case - the thousands group separator is not used for backward compatibility reasons. - See also - setNumberFlags(flags)¶
- Parameters:
- flags – Combination of - NumberFlag
 
 - Sets the current number flags to - flags.- flagsis a set of flags from the- NumberFlagenum, and describes options for formatting generated code (e.g., whether or not to always write the base or sign of a number).- setPadChar(ch)¶
- Parameters:
- ch – - QChar
 
 - Warning - This section contains snippets that were automatically translated from C++ to Python and may contain errors. - Sets the pad character to - ch. The default value is the ASCII space character (’ ‘), or- QChar(0x20). This character is used to fill in the space in fields when generating text.- Example: - s = QString() out = QTextStream(s) out.setFieldWidth(10) out.setFieldAlignment(QTextStream.AlignCenter) out.setPadChar('-') out << "Qt" << "rocks!" - The string - scontains:- Qtrocksnot -= 1 - See also - setRealNumberNotation(notation)¶
- Parameters:
- notation – - RealNumberNotation
 
 - Sets the real number notation to - notation(- SmartNotation,- FixedNotation,- ScientificNotation). When reading and generating numbers,- QTextStreamuses this value to detect the formatting of real numbers.- setRealNumberPrecision(precision)¶
- Parameters:
- precision – int 
 
 - Sets the precision of real numbers to - precision. This value describes the number of fraction digits- QTextStreamshould write when generating real numbers (- FixedNotation,- ScientificNotation), or the maximum number of significant digits (- SmartNotation).- The precision cannot be a negative value. The default value is 6. - Sets the status of the text stream to the - statusgiven.- Subsequent calls to setStatus() are ignored until - resetStatus()is called.- See also - skipWhiteSpace()¶
 - Reads and discards whitespace from the stream until either a non-space character is detected, or until - atEnd()returns true. This function is useful when reading a stream character by character.- Whitespace characters are all characters for which - isSpace()returns- true.- See also - operator>>()- Returns the status of the text stream. - See also - string()¶
- Return type:
- str 
 
 - Returns the current string assigned to the - QTextStream, or- Noneif no string has been assigned.- See also - setString()- device()