The msvcrt Module

(Windows/DOS only) The msvcrt module gives you access to a number of functions in the Microsoft Visual C/C++ Runtime Library (MSVCRT).

Example 12-13 demonstrates the getch function reading a single keypress from the console.

Example 12-13. Using the msvcrt Module to Get Key Presses

File: msvcrt-example-1.py

import msvcrt

print "press 'escape' to quit..."

while 1:
 char = msvcrt.getch()
 if char == chr(27):
 break
 print char,
 if char == chr(13):
 print

press 'escape' to quit...
h e l l o

The kbhit function returns true if a key has been pressed (which means that getch won't block), as shown in Example 12-14.

Example 12-14. Using the msvcrt Module to Poll the Keyboard

File: msvcrt-example-2.py

import msvcrt
import time

print "press SPACE to enter the serial number"

while not msvcrt.kbhit() or msvcrt.getch() != " ":
 # do something else
 print ".",
 time.sleep(0.1)

print

# clear the keyboard buffer
while msvcrt.kbhit():
 msvcrt.getch()

serial = raw_input("enter your serial number: ")

print "serial number is", serial

press SPACE to enter the serial number
. . . . . . . . . . . . . . . . . . . . . . . .
enter your serial number: 10
serial number is 10

The locking function in Example 12-15 can be used to implement cross-process file locking under Windows.

Example 12-15. Using the msvcrt Module for File Locking

File: msvcrt-example-3.py

import msvcrt
import os

LK_UNLCK = 0 # unlock the file region
LK_LOCK = 1 # lock the file region
LK_NBLCK = 2 # non-blocking lock
LK_RLCK = 3 # lock for writing
LK_NBRLCK = 4 # non-blocking lock for writing

FILE = "counter.txt"

if not os.path.exists(FILE):
 file = open(FILE, "w")
 file.write("0")
 file.close()

for i in range(20):
 file = open(FILE, "r+")
 # look from current position (0) to end of file
 msvcrt.locking(file.fileno(), LK_LOCK, os.path.getsize(FILE))
 counter = int(file.readline()) + 1
 file.seek(0)
 file.write(str(counter))
 file.close() # unlocks the file
 print os.getpid(), "=>", counter
 time.sleep(0.1)

208 => 21
208 => 22
208 => 23
208 => 24
208 => 25
208 => 26

Core Modules

More Standard Modules

Threads and Processes

Data Representation

File Formats

Mail and News Message Processing

Network Protocols

Internationalization

Multimedia Modules

Data Storage

Tools and Utilities

Platform-Specific Modules

Implementation Support Modules

Other Modules



Python Standard Library
Python Standard Library (Nutshell Handbooks) with
ISBN: 0596000960
EAN: 2147483647
Year: 2000
Pages: 252
Authors: Fredrik Lundh

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net