Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תיכנות בלינוקס - ארגומנטים ופקודות בפייתון

elcuco - 23/03/2017 - 12:44
נושא ההודעה: ארגומנטים ופקודות בפייתון
אני מנסה לכתוב כלי שורת פקודה, שעובד בערך כמו apt.

הארגומנט הראשון הוא הפקודה, ולאחריו יש ארגומנים לפקודה. יש דגלים גלובליים (למשל --verbose) ויש דגלים שקשורים לפקודה (למשל --purge). אני עובד ב-Python3 ואני תקוע, הדוגמאות שיש בתיעוד לא מספקות.

בינתיים זה מה שיש לי:
קוד:

parser = argparse.ArgumentParser()
parser.add_argument("list")
# parser.add_argument("init")
args = parser.parse_args()

if args.list:
   loadDefinitions()
   printDefinitions()
# elif args.init:
   # loadDefinitions()
   # TOOD - create standard init file for project   


אבל אם אני משתמש בקוד שבהערות, אני דורש שגם init וגם list יישלחו. לחליפין - אשמח לקבל פרוייקט לדוגמה שאני אלמד ממנו.
Anonymous - 23/03/2017 - 13:39
נושא ההודעה:
אם אני מבין נכון הגדרת לו שני פרמטרים שהם positional, אם מועבר רק פרמטר אחד איך הוא אמור לדעת לאיזה מהם התכוונת?
Anonymous - 23/03/2017 - 13:46
נושא ההודעה:
הסתכלת פשוט על ה-tutorial? נראה לי הסבר די ברור
https://docs.python.org/3/howto/argparse.html
Anonymous - 23/03/2017 - 14:03
נושא ההודעה:
דוגמה: git-buildpackage

https://honk.sigxcpu.org/piki/projects/git-buildpackage/
mksoft - 23/03/2017 - 14:40
נושא ההודעה:
ללא קשר, אם אין לך בעיה להציג תלות בספריה בפרוייקט, הייתי ממליץ לך להשתמש במשהו כמו click‏:
http://click.pocoo.org
elcuco - 23/03/2017 - 15:15
נושא ההודעה:
e :
אם אני מבין נכון הגדרת לו שני פרמטרים שהם positional, אם מועבר רק פרמטר אחד איך הוא אמור לדעת לאיזה מהם התכוונת?


אני צריך לדעת מה ה-first argument, אני מבין שפה הטרמינולוגיה היא positional parameter?

אם כן - השאלה שלי היא ״איך אני יודע מה הפרמטר הראשון שהועבר״? ואיך אני משנה את ה-optional agument בהתאם ל-first argument?

mksoft - האמת, שאי מעדיף שלא. זה פרוייקט היתתכנות, ואם כבר אני מעדיך ללמוד בו דברים פשוטים ולא להתעמק (האמת, אני שוקל לעבור בעצמי על argv ולפרסר בעצמי).

- תודה
mksoft - 23/03/2017 - 16:23
נושא ההודעה:
סבבה.

זה לא ארגומנט אופציונלי, אלא ארגומנט של פקודה עם אפשרויות של list ו-init.

הגדר positional argument בודד, עם choices שלהם:
https://docs.python.org/3/library/argparse.html#choices

נ.ב.
אל תפרסר בעצמך, ניסיתי את השטות הזו פעם, חבל על העבודה.
Anonymous - 23/03/2017 - 18:07
נושא ההודעה:
סליחה שאני מתפרץ מבלי להבין שמץ אבל אתה לא מתכוון במקרה ל getopt ?

https://docs.python.org/3.1/library/getopt.html
elcuco - 23/03/2017 - 19:06
נושא ההודעה:
mksoft :
סבבה.

זה לא ארגומנט אופציונלי, אלא ארגומנט של פקודה עם אפשרויות של list ו-init.

הגדר positional argument בודד, עם choices שלהם:
https://docs.python.org/3/library/argparse.html#choices

נ.ב.
אל תפרסר בעצמך, ניסיתי את השטות הזו פעם, חבל על העבודה.


מסתבר שאכן הייתי צריך choises. שאלה נוספת:
האם אני יכול להגדיר optional argument עבור כל option שונה?
Anonymous - 23/03/2017 - 20:14
נושא ההודעה:
elcuco :

האם אני יכול להגדיר optional argument עבור כל option שונה?

נדמה לי שמה שאתה מחפש זה Sub-commands
https://docs.python.org/3/library/argparse.html#sub-commands
DanRR - 23/03/2017 - 22:29
נושא ההודעה:
אם הבנתי נכון, אתה צריך פרסר של שורת פקודה? יש את argparse, סיפריה סטנדרטית של פיתון:

https://docs.python.org/3/library/argparse.html
DanRR - 23/03/2017 - 22:35
נושא ההודעה:
לא יודע אם זה יעזור, קבל דוגמא:
קוד:
    parser = argparse.ArgumentParser()
    parser.add_argument('-rd', '--recursive-dirs',nargs='*', dest='recursive_dirs', help='recursive directories')
    parser.add_argument('-fd', '--flat-dirs',nargs='*', dest='flat_dirs', help='flat directories')
    parser.add_argument('-exd', '--exclude-dirs', nargs='*', dest='exclude_dirs', help='exclude directories')
    parser.add_argument('-exf', '--exclude-files', nargs='*', dest='exclude_files', help='exclude files')
    parser.add_argument('-od', '--out-dir',nargs='?', dest ='out_dir', help='output files directory', default='.')
    parser.add_argument('-re', '--path-re',type=str, dest='path_match_expression',
                        help='path match regular expression', required=True)
    parser.add_argument('-csv', '--csv-files', nargs='*', dest ='csv_files', help='csv files')
    parser.add_argument('-crd', '--csv-root-dirs', nargs='*', dest ='csv_paths_root_dirs', help='csv paths root dirs')
    parser.add_argument('-ty', '--types', nargs='*', dest='file_types', help='file types', default='*')
    parser.add_argument('-nl', '--no-links', dest='no_links', action='store_true', default=False)
    args = parser.parse_args()
    if args.recursive_dirs is None and args.flat_dirs is None and args.csv_files is None:
        parser.error("at least one of -rd, -fd or -csv required")
...

elcuco - 24/03/2017 - 19:01
נושא ההודעה:
Anonymous :
elcuco :

האם אני יכול להגדיר optional argument עבור כל option שונה?

נדמה לי שמה שאתה מחפש זה Sub-commands
https://docs.python.org/3/library/argparse.html#sub-commands


תודה - נראה שזה זה. הניסיון שלי עם פייתון קצת לוקה בחסר... אבל אני מתחיל להבין את העיניין.

ואם אני כבר כאן... עוד שאלה:

אני עובד עם עורך טקסט מוצמד לצד ימין של המסך, ומסוף בצד ימין. אני עובר ביניהם ומקווה לטוב. זה עושה לי סחרחורת (אפקטים מיותרים חלק מהזמן) ואני צריך השלמת טקסט. ולראות תיעוד בו זמנית.

איך עובדים עם פיית'ון הילדים הגדולים? (אני כבר יודע מה מאיר יגיד לי).
Anonymous - 24/03/2017 - 19:25
נושא ההודעה:
elcuco :
Anonymous :
elcuco :

האם אני יכול להגדיר optional argument עבור כל option שונה?

נדמה לי שמה שאתה מחפש זה Sub-commands
https://docs.python.org/3/library/argparse.html#sub-commands


תודה - נראה שזה זה. הניסיון שלי עם פייתון קצת לוקה בחסר... אבל אני מתחיל להבין את העיניין.

ואם אני כבר כאן... עוד שאלה:

אני עובד עם עורך טקסט מוצמד לצד ימין של המסך, ומסוף בצד ימין. אני עובר ביניהם ומקווה לטוב. זה עושה לי סחרחורת (אפקטים מיותרים חלק מהזמן) ואני צריך השלמת טקסט. ולראות תיעוד בו זמנית.

איך עובדים עם פיית'ון הילדים הגדולים? (אני כבר יודע מה מאיר יגיד לי).


אז באמת מה אתה מחפש פה
queency - 24/03/2017 - 19:26
נושא ההודעה:
https://www.google.co.il/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=0ahUKEwjV04Ggx-_SAhUIIJoKHX-_A9UQFghBMAQ&url=https%3A%2F%2Fdocs.python.org%2F2%2Flibrary%2Frlcompleter.html&usg=AFQjCNH0GOgbPS0Zy_gLfdoYLSyK3Eq5JQ
mksoft - 25/03/2017 - 14:41
נושא ההודעה:
elcuco :
Anonymous :
elcuco :

האם אני יכול להגדיר optional argument עבור כל option שונה?

נדמה לי שמה שאתה מחפש זה Sub-commands
https://docs.python.org/3/library/argparse.html#sub-commands


תודה - נראה שזה זה. הניסיון שלי עם פייתון קצת לוקה בחסר... אבל אני מתחיל להבין את העיניין.

ואם אני כבר כאן... עוד שאלה:

אני עובד עם עורך טקסט מוצמד לצד ימין של המסך, ומסוף בצד ימין. אני עובר ביניהם ומקווה לטוב. זה עושה לי סחרחורת (אפקטים מיותרים חלק מהזמן) ואני צריך השלמת טקסט. ולראות תיעוד בו זמנית.

איך עובדים עם פיית'ון הילדים הגדולים? (אני כבר יודע מה מאיר יגיד לי).


אתה יכול לעבוד עם IDE כמו PyCharm, שהוא מאוד פופולרי, יש לו community edition, הרישיון שלו לא יקר מדי בכל מקרה:
https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html
elcuco - 26/03/2017 - 10:47
נושא ההודעה:
mksoft :

אתה יכול לעבוד עם IDE כמו PyCharm, שהוא מאוד פופולרי, יש לו community edition, הרישיון שלו לא יקר מדי בכל מקרה:
https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html


אני מחפש משהו יותר חופשי.
mksoft - 26/03/2017 - 11:50
נושא ההודעה:

כולם למעט LiClipse קוד פתוח.

תוכל למצוא עוד כאן:
http://docs.python-guide.org/en/latest/dev/env/
Anonymous - 26/03/2017 - 11:53
נושא ההודעה:
elcuco :
אני מחפש משהו יותר חופשי.

ה-community edition הוא קוד פתוח ברשיון אפצי
Anonymous - 26/03/2017 - 21:24
נושא ההודעה:
ה pycharm מתקרב בכבדות (ובסיבוכיות) שלו ל visual studio
אלא אם זה מגה פרוייקט (נגיד בדג'נגו) אני לא רואה שום סיבה להשתמש בו.
כל השאר הם ברמה של notepad++
אני אוהב את נינג'ה
Anonymous - 27/03/2017 - 10:50
נושא ההודעה:
https://www.sublimetext.com/
I'm working with sublime and very happy with it.
don't be afraid of the high price tag, you don't actually have to buy it.
Anonymous - 29/03/2017 - 04:40
נושא ההודעה:
אני חושב שניסיתי כמעט את כל העורכים שמאיר הביא בהודעה שלו פרט לאחד.
המסקנות שלי בקשר לעורכי פייתון הם
pycharm אחלה IDE אבל כבד
Spyder עורך קליל ונחמד אבל לוקה בחסר
vscode עורך ממש ממש נחמד, כרגע הוא העורך שלי, כעורך בלבד.

תכלס פיתוח אני מוצא את עצמי רוב הזמן משתמש בjupyter שזה Ipython על סטרואידים, זה מתחיל בכתיבה קלילה של קוד כדי לוודאות יתכנות וזה ממשיך את דרכו לעורך של מיקרוסופט איפה שכל הקוד נמצא.


נ.ב. אין לי מושג מה זה הErik הזה, מעולם לא הבנתי מה הוא רוצה ממני ולמה אי אפשר פשוט חכתוב קוד.
כל הזמנים הם GMT + 2 שעות