பைத்தானில் இருந்து கணினி கட்டளைகளை இயக்குகிறது
பைதான் வெளிப்புற நிரல்கள் மற்றும் கணினி கட்டளைகளை நேரடியாக உங்கள் ஸ்கிரிப்ட்களில் இருந்து செயல்படுத்துவதற்கான சக்திவாய்ந்த திறன்களை வழங்குகிறது. உங்கள் இயக்க முறைமையில் கிடைக்கும் பரந்த அளவிலான கருவிகளைப் பயன்படுத்தி, பைத்தானின் எளிமையைப் பயன்படுத்த இந்த அம்சம் உங்களை அனுமதிக்கிறது.
நீங்கள் மீண்டும் மீண்டும் செய்யும் பணிகளை தானியக்கமாக்கினாலும் அல்லது சிக்கலான பணிப்பாய்வுகளை ஒருங்கிணைத்தாலும், பைத்தானில் கணினி கட்டளைகளை எவ்வாறு அழைப்பது என்பதைப் புரிந்துகொள்வது உங்கள் உற்பத்தித்திறனை கணிசமாக மேம்படுத்தும். இந்த வழிகாட்டியில், இதை திறம்பட அடைய பல்வேறு முறைகளை ஆராய்வோம்.
| கட்டளை | விளக்கம் |
|---|---|
| subprocess.run | துணை ஷெல்லில் ஒரு கட்டளையை இயக்குகிறது. வெளியீடு மற்றும் பிழைகளைப் பிடிக்க முடியும். |
| subprocess.run([...], capture_output=True) | செயல்படுத்தப்பட்ட கட்டளையின் நிலையான வெளியீடு மற்றும் நிலையான பிழையைப் பிடிக்கிறது. |
| subprocess.run([...], shell=True) | ஷெல் மூலம் கட்டளையை இயக்குகிறது, வைல்டு கார்டுகள் போன்ற ஷெல் அம்சங்களை அனுமதிக்கிறது. |
| subprocess.Popen | ஒரு புதிய செயல்பாட்டில் ஒரு கட்டளையை செயல்படுத்துகிறது, அதன் செயல்பாட்டின் மீது கூடுதல் கட்டுப்பாட்டை வழங்குகிறது. |
| process.stdout.readline() | செயல்முறையின் நிலையான வெளியீட்டிலிருந்து வெளியீட்டின் வரியைப் படிக்கிறது. |
| os.system | ஒரு கட்டளையை துணை ஷெல்லில் இயக்குகிறது, இது பொதுவாக எளிய கட்டளையை செயல்படுத்த பயன்படுகிறது. |
| subprocess.check_output | கட்டளையை இயக்கி அதன் வெளியீட்டை வழங்குகிறது. கட்டளை தோல்வியுற்றால் விதிவிலக்கு எழுப்புகிறது. |
| os.environ.copy() | தற்போதைய சூழல் மாறிகளின் நகலை உருவாக்கி, மாற்றங்களை அனுமதிக்கிறது. |
| env parameter in subprocess.run | புதிய செயல்முறைக்கான சூழல் மாறிகளைக் குறிப்பிடுகிறது. |
பைத்தானில் ஸ்கிரிப்ட் செயல்படுத்தலைப் புரிந்துகொள்வது
வழங்கப்பட்ட ஸ்கிரிப்டுகள் பைத்தானைப் பயன்படுத்தி வெளிப்புற கட்டளைகளை இயக்குவதற்கான பல்வேறு வழிகளை விளக்குகின்றன. தி subprocess.run கட்டளை பல்துறை, இது உங்கள் பைதான் ஸ்கிரிப்ட்டிலிருந்து நேரடியாக ஷெல் கட்டளைகளை இயக்க அனுமதிக்கிறது. உதாரணமாக, subprocess.run(['echo', 'Hello, World!']) கன்சோலுக்கு ஒரு செய்தியை அச்சிடுகிறது subprocess.run(['ls', '-l'], capture_output=True, text=True) இன் வெளியீட்டைப் பிடிக்கிறது ls -l கட்டளை, ஒரு விரிவான அடைவு பட்டியலைக் காட்டுகிறது. பயன்படுத்தி shell=True உடன் subprocess.run வைல்டு கார்டு விரிவாக்கம் போன்ற ஷெல் அம்சங்களைப் பயன்படுத்த அனுமதிக்கிறது, இது மிகவும் சிக்கலான கட்டளைகளுக்கு எளிதாக்குகிறது.
தி subprocess.Popen ஒத்திசைவற்ற கட்டளை இயக்கம் மற்றும் செயல்முறையின் உள்ளீடு மற்றும் வெளியீட்டு ஸ்ட்ரீம்களுடன் தொடர்புகொள்வதை அனுமதிப்பதன் மூலம் கட்டளை செயல்படுத்துதலின் மீது கட்டளை கூடுதல் கட்டுப்பாட்டை வழங்குகிறது. உதாரணமாக, ஸ்கிரிப்ட் உதாரணம் subprocess.Popen(['ping', 'localhost'], stdout=subprocess.PIPE) உள்ளூர் இயந்திரத்தை தொடர்ந்து பிங் செய்து ஒவ்வொரு வரி வெளியீட்டையும் படிக்கிறது. கூடுதலாக, os.system எளிமையான கட்டளையை செயல்படுத்துவதற்குப் பயன்படுத்தப்படுகிறது, ஆனால் நெகிழ்வுத்தன்மை இல்லை subprocess. சுற்றுச்சூழல் மாறிகள் மாற்றியமைக்கப்பட்டு துணை செயல்முறைக்கு அனுப்பப்படும் os.environ.copy() மற்றும் இந்த env அளவுரு உள்ள subprocess.run, சுற்றுச்சூழலின் அடிப்படையில் டைனமிக் கட்டளை செயல்படுத்தலை அனுமதிக்கிறது.
பைத்தானில் வெளிப்புற கட்டளைகளை செயல்படுத்துதல்
பைத்தானின் துணை செயல்முறை தொகுதியைப் பயன்படுத்துதல்
import subprocess# Example 1: Running a simple shell commandsubprocess.run(['echo', 'Hello, World!'])# Example 2: Capturing the output of a commandresult = subprocess.run(['ls', '-l'], capture_output=True, text=True)print(result.stdout)# Example 3: Running a command with shell=Truesubprocess.run('echo Hello from the shell', shell=True)# Example 4: Checking the return coderesult = subprocess.run(['ls', 'nonexistentfile'], capture_output=True)if result.returncode != 0:print('Command failed')# Example 5: Using subprocess.Popen for more controlprocess = subprocess.Popen(['ping', 'localhost'], stdout=subprocess.PIPE)while True:output = process.stdout.readline()if output == b'' and process.poll() is not None:breakif output:print(output.strip().decode())
பைதான் மூலம் கணினி பணிகளை தானியக்கமாக்குகிறது
os.system மற்றும் subprocess தொகுதிகளைப் பயன்படுத்துதல்
import osimport subprocess# Example 1: Using os.system to run a commandos.system('echo This is a test')# Example 2: Running a command and capturing output with subprocessresult = subprocess.run(['date'], capture_output=True, text=True)print('Current date and time:', result.stdout)# Example 3: Executing multiple commandscommands = ['echo First command', 'echo Second command']for cmd in commands:os.system(cmd)# Example 4: Running a command with environment variablesenv = os.environ.copy()env['MY_VAR'] = 'Hello'subprocess.run('echo $MY_VAR', shell=True, env=env)# Example 5: Handling command errorstry:subprocess.check_output(['false_command'], stderr=subprocess.STDOUT)except subprocess.CalledProcessError as e:print('An error occurred:', e.output.decode())
சிஸ்டம் கமாண்ட் எக்ஸிகியூஷனுக்கான மேம்பட்ட நுட்பங்கள்
பைத்தானில் கணினி கட்டளைகளை செயல்படுத்துவதில் மற்றொரு அம்சம் பயன்படுத்துவதை உள்ளடக்கியது shlex ஷெல் கட்டளை பாகுபடுத்தலைக் கையாளும் தொகுதி. ஷெல் கட்டளைகளை பட்டியல் வடிவத்தில் பிரிப்பதற்கான வழியை இந்த தொகுதி வழங்குகிறது, பின்னர் அதை அனுப்பலாம் subprocess செயல்பாடுகள். இடைவெளிகளுடன் கூடிய வாதங்கள் சரியாக கையாளப்படுவதை இது உறுதி செய்கிறது. கூடுதலாக, நீங்கள் பயன்படுத்தலாம் subprocess.PIPE நிலையான உள்ளீடு, வெளியீடு மற்றும் பிழை ஸ்ட்ரீம்களை பெற்றோர் செயல்முறைக்கு இயக்குவது, மிகவும் சிக்கலான இடை-செயல்முறை தொடர்புக்கு அனுமதிக்கிறது.
எடுத்துக்காட்டாக, ஒரு கட்டளையின் வெளியீட்டை மற்றொரு கட்டளைக்கு பைப்பிங் செய்வதன் மூலம் கட்டளைகளை இணைக்கவும், அவற்றின் வெளியீட்டை வரிசையாக செயலாக்கவும் அடையலாம். subprocess.Popen. ஷெல் ஸ்கிரிப்ட்டில் நீங்கள் செய்வதைப் போன்ற சக்திவாய்ந்த கட்டளைத் தொடர்களை உருவாக்க இது உங்களை அனுமதிக்கிறது. நீங்களும் பயன்படுத்தலாம் threading பல துணை செயலாக்க கட்டளைகளை ஒரே நேரத்தில் இயக்க, உங்கள் ஸ்கிரிப்ட்டின் செயல்திறனை மேம்படுத்துகிறது, குறிப்பாக I/O-பவுண்ட் பணிகளைக் கையாளும் போது.
பைத்தானில் கணினி கட்டளைகளை இயக்குவது குறித்து அடிக்கடி கேட்கப்படும் கேள்விகள்
- ஷெல் கட்டளையை எவ்வாறு இயக்கி அதன் வெளியீட்டை பைத்தானில் பெறுவது?
- பயன்படுத்தவும் subprocess.run உடன் capture_output=True கட்டளையின் வெளியீட்டைப் பிடிக்க.
- என்ன வித்தியாசம் subprocess.run மற்றும் subprocess.Popen?
- subprocess.run கட்டளை முடிவடையும் வரை காத்திருக்கும் ஒரு எளிய இடைமுகமாகும் subprocess.Popen ஒத்திசைவற்ற செயல்பாட்டை அனுமதிக்கும் கட்டளையை செயல்படுத்துவதில் அதிக கட்டுப்பாட்டை அளிக்கிறது.
- கணினி கட்டளையை இயக்கும்போது பிழைகளை எவ்வாறு கையாள்வது?
- பயன்படுத்தவும் try மற்றும் except உடன் தொகுதிகள் subprocess.CalledProcessError பிழைகளைப் பிடிக்கவும் கையாளவும்.
- சூழல் மாறிகளை ஒரு கட்டளைக்கு அனுப்ப முடியுமா?
- ஆம், பயன்படுத்தவும் env அளவுரு உள்ள subprocess.run அல்லது subprocess.Popen சுற்றுச்சூழல் மாறிகளை அனுப்ப.
- பல கட்டளைகளை வரிசையாக எவ்வாறு இயக்குவது?
- பயன்படுத்தவும் subprocess.run அல்லது subprocess.Popen ஒரு லூப் அல்லது சங்கிலி கட்டளைகளில் குழாய்களைப் பயன்படுத்தி subprocess.Popen.
- பயனர் உள்ளீடு தேவைப்படும் கட்டளையை எவ்வாறு இயக்குவது?
- பயன்படுத்தவும் subprocess.Popen உடன் stdin=subprocess.PIPE மற்றும் பயன்படுத்தி செயல்முறை தொடர்பு process.communicate.
- என்ன பயன் shlex கட்டளை நிறைவேற்றத்தில்?
- shlex ஷெல் கட்டளைகளை சரியாக அலச உதவுகிறது, இடைவெளிகளுடன் வாதங்கள் சரியாக கையாளப்படுவதை உறுதி செய்கிறது.
- பின்னணியில் கட்டளையை எவ்வாறு இயக்குவது?
- பயன்படுத்தவும் subprocess.Popen செயல்முறை முடிவடையும் வரை காத்திருக்காமல், அல்லது பயன்படுத்தவும் threading பின்னணி செயலாக்கத்தை நிர்வகிக்க.
சிஸ்டம் கமாண்ட் எக்ஸிகியூஷனுக்கான மேம்பட்ட நுட்பங்கள்
பைத்தானில் கணினி கட்டளைகளை செயல்படுத்துவதில் மற்றொரு அம்சம் பயன்படுத்துவதை உள்ளடக்கியது shlex ஷெல் கட்டளை பாகுபடுத்தலைக் கையாளும் தொகுதி. ஷெல் கட்டளைகளை பட்டியல் வடிவத்தில் பிரிப்பதற்கான வழியை இந்த தொகுதி வழங்குகிறது, பின்னர் அதை அனுப்பலாம் subprocess செயல்பாடுகள். இடைவெளிகளுடன் கூடிய வாதங்கள் சரியாக கையாளப்படுவதை இது உறுதி செய்கிறது. கூடுதலாக, நீங்கள் பயன்படுத்தலாம் subprocess.PIPE நிலையான உள்ளீடு, வெளியீடு மற்றும் பிழை ஸ்ட்ரீம்களை பெற்றோர் செயல்முறைக்கு இயக்குவது, மிகவும் சிக்கலான இடை-செயல்முறை தொடர்புக்கு அனுமதிக்கிறது.
எடுத்துக்காட்டாக, ஒரு கட்டளையின் வெளியீட்டை மற்றொரு கட்டளைக்கு பைப்பிங் செய்வதன் மூலம் கட்டளைகளை இணைக்கவும், அவற்றின் வெளியீட்டை வரிசையாக செயலாக்கவும் அடையலாம். subprocess.Popen. ஷெல் ஸ்கிரிப்ட்டில் நீங்கள் செய்வதைப் போன்ற சக்திவாய்ந்த கட்டளைத் தொடர்களை உருவாக்க இது உங்களை அனுமதிக்கிறது. நீங்களும் பயன்படுத்தலாம் threading பல துணை செயலாக்க கட்டளைகளை ஒரே நேரத்தில் இயக்க, உங்கள் ஸ்கிரிப்ட்டின் செயல்திறனை மேம்படுத்துகிறது, குறிப்பாக I/O-பவுண்ட் பணிகளைக் கையாளும் போது.
பைத்தானில் கட்டளைகளை செயல்படுத்துவதற்கான இறுதி எண்ணங்கள்
பைத்தானில் வெளிப்புறக் கட்டளைகளை இயக்குவது என்பது பல்துறை மற்றும் சக்திவாய்ந்த திறனாகும், இது உங்கள் ஸ்கிரிப்டிங் மற்றும் ஆட்டோமேஷன் பணிகளை கணிசமாக மேம்படுத்தும். பயன்படுத்துவதன் மூலம் subprocess தொகுதி, நீங்கள் ஷெல் கட்டளைகளை இயக்கலாம், அவற்றின் வெளியீடுகளைப் பிடிக்கலாம் மற்றும் பிழைகளை திறம்பட கையாளலாம். தி os.system செயல்பாடு அடிப்படை கட்டளையை செயல்படுத்துவதற்கான எளிய மாற்றீட்டை வழங்குகிறது. கூடுதலாக, ஒருங்கிணைக்கிறது shlex தொகுதியானது சிக்கலான ஷெல் கட்டளைகளின் சரியான பாகுபடுத்தலை உறுதி செய்கிறது. இந்த நுட்பங்களைப் புரிந்துகொள்வது, உங்கள் இயக்க முறைமையின் கட்டளை வரி கருவிகளின் முழு திறனையும் பயன்படுத்தி, பைத்தானின் பலத்தை மேம்படுத்த உதவுகிறது.