Sök…


Använda input () och raw_input ()

Python 2.x 2.3

raw_input väntar på att användaren ska skriva in text och sedan returnera resultatet som en sträng.

foo = raw_input("Put a message here that asks the user for input")

I exemplet ovan lagrar foo vilken input användaren tillhandahåller.

Python 3.x 3.0

input kommer att vänta på att användaren ska mata in text och sedan returnera resultatet som en sträng.

foo = input("Put a message here that asks the user for input")

I exemplet ovan lagrar foo vilken input användaren tillhandahåller.

Använda utskriftsfunktionen

Python 3.x 3.0

I Python 3 är utskriftsfunktionaliteten i form av en funktion:

print("This string will be displayed in the output")
# This string will be displayed in the output

print("You can print \n escape characters too.")
# You can print escape characters too.
Python 2.x 2.3

I Python 2 var utskriften ursprungligen ett uttalande, som visas nedan.

print "This string will be displayed in the output"
# This string will be displayed in the output

print "You can print \n escape characters too."
# You can print escape characters too.

Obs from __future__ import print_function i Python 2 gör att användare kan använda funktionen print() på samma sätt som Python 3-koden. Detta är endast tillgängligt i Python 2.6 och högre.

Funktion för att be användaren om ett nummer

def input_number(msg, err_msg=None):
    while True:
        try:
            return float(raw_input(msg))
        except ValueError:
            if err_msg is not None:
                print(err_msg)


def input_number(msg, err_msg=None):
    while True:
        try:
            return float(input(msg))
        except ValueError:
            if err_msg is not None:
                print(err_msg)

Och för att använda det:

user_number = input_number("input a number: ", "that's not a number!")

Eller om du inte vill ha ett "felmeddelande":

user_number = input_number("input a number: ")

Skriva ut en sträng utan ny linje i slutet

Python 2.x 2.3

I Python 2.x att fortsätta en rad med print , avslutar print uttalande med kommatecken. Det lägger automatiskt till ett utrymme.

print "Hello,",
print "World!"
# Hello, World!
Python 3.x 3.0

I Python 3.x, den print har funktionen en valfri end parameter som är vad det skriver i slutet av den givna strängen. Som standard är det en newline-karaktär, så motsvarande:

print("Hello, ", end="\n")
print("World!")
# Hello, 
# World!

Men du kan passera i andra strängar

print("Hello, ", end="")
print("World!")
# Hello, World!

print("Hello, ", end="<br>")
print("World!")
# Hello, <br>World!

print("Hello, ", end="BREAK")
print("World!")
# Hello, BREAKWorld!

Om du vill ha mer kontroll över utgången kan du använda sys.stdout.write :

import sys

sys.stdout.write("Hello, ")
sys.stdout.write("World!")
# Hello, World!

Läs från stdin

Python-program kan läsas från unix-pipelines . Här är ett enkelt exempel på hur du läser från stdin :

import sys

for line in sys.stdin:
    print(line)

Var medveten om att sys.stdin är en ström. Det betyder att for-loopen bara kommer att avslutas när strömmen har slutat.

Du kan nu leda utdata från ett annat program till ditt pythonprogram enligt följande:

$ cat myfile | python myprogram.py

I det här exemplet kan cat myfile vara vilket som helst unix-kommando som matar ut till stdout .

Alternativt kan du använda filinputmodulen praktiskt:

import fileinput
for line in fileinput.input():
    process(line)

Inmatning från en fil

Ingången kan också läsas från filer. Filer kan öppnas med den inbyggda funktionen open . Att använda en with <command> as <name> syntax (kallas 'Context Manager') gör att det är enkelt att open och få ett handtag för filen:

with open('somefile.txt', 'r') as fileobj:
    # write code here using fileobj

Detta säkerställer att när kodöverföring lämnar blocket stängs filen automatiskt.

Filer kan öppnas i olika lägen. I exemplet ovan öppnas filen som skrivskyddad. För att öppna en befintlig fil för läsning, använd bara r . Om du vill läsa den filen som byte använder du rb . För att lägga till data till en befintlig fil använder du a . Använd w att skapa en fil eller skriva över befintliga filer med samma namn. Du kan använda r+ att öppna en fil för både läsning och skrivning. Det första argumentet med open() är filnamnet, det andra är läget. Om läget lämnas tomt, kommer det att r .

# let's create an example file:
with open('shoppinglist.txt', 'w') as fileobj:
    fileobj.write('tomato\npasta\ngarlic')

with open('shoppinglist.txt', 'r') as fileobj:
    # this method makes a list where each line 
    # of the file is an element in the list
    lines = fileobj.readlines()

print(lines)
# ['tomato\n', 'pasta\n', 'garlic']

with open('shoppinglist.txt', 'r') as fileobj:
    # here we read the whole content into one string:
    content = fileobj.read()
    # get a list of lines, just like int the previous example:
    lines = content.split('\n')

print(lines)
# ['tomato', 'pasta', 'garlic']

Om filstorleken är liten är det säkert att läsa hela filinnehållet i minnet. Om filen är mycket stor är det ofta bättre att läsa rad för rad eller med bitar och bearbeta ingången i samma slinga. Att göra det:

with open('shoppinglist.txt', 'r') as fileobj:
    # this method reads line by line:
    lines = []
    for line in fileobj:
        lines.append(line.strip())

När du läser filer ska du vara medveten om de operativsystemspecifika linjeavbrottstecken. Även for line in fileobj automatiskt tar bort dem, är det alltid säkert att ringa strip() på de lästa raderna, som det visas ovan.

Öppnade filer ( fileobj i exemplen ovan) pekar alltid på en specifik plats i filen. När de först öppnas pekar filhandtaget till filens början, vilket är positionen 0 . Filhandtaget kan visa sin aktuella position med tell :

fileobj = open('shoppinglist.txt', 'r')
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 0.

Efter att ha läst allt innehåll kommer filhanterarens position att pekas i slutet av filen:

content = fileobj.read()
end = fileobj.tell()
print('This file was %u characters long.' % end)
# This file was 22 characters long.
fileobj.close()

Filhanterarens position kan ställas in på vad som behövs:

fileobj = open('shoppinglist.txt', 'r')
fileobj.seek(7)
pos = fileobj.tell()
print('We are at character #%u.' % pos)

Du kan också läsa vilken längd som helst från filinnehållet under ett givet samtal. För att göra detta pass ett argument för read() . När read() kallas utan argument läses den förrän filens slut. Om du passerar ett argument kommer det att läsa det antalet byte eller tecken, beroende på läget ( rb respektive r ):

# reads the next 4 characters 
# starting at the current position
next4 = fileobj.read(4)
# what we got?
print(next4) # 'cucu'
# where we are now?
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 11, as we was at 7, and read 4 chars.

fileobj.close()

För att visa skillnaden mellan tecken och byte:

with open('shoppinglist.txt', 'r') as fileobj:
    print(type(fileobj.read())) # <class 'str'>

with open('shoppinglist.txt', 'rb') as fileobj:
    print(type(fileobj.read())) # <class 'bytes'>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow