צריך עזרה בכתיבת סקריפט פייטון.

תוכנות ניהול מדיה: KODI, תוספים, XBMC, Media Portal, PLEX וכו'
עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #1 

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

מדובר על מערכת אנדרואיד ומשום מה הפקודה os.statvfs('/')
מחזירה לי שגיאה: 'module' object has no attribute 'statvfs'.
לא משנה מה אני שם בPATH.

האם יש איזו שהי דרך?


תודה רבה

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3630
הצטרף: מאי 2005
נתן תודות: 126 פעמים
קיבל תודות: 482 פעמים

שליחה #2 

הדוגמאות כאן עובדות לי במק:

http://stackoverflow.com/questions/4260 ... given-file


Batnun

.

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3630
הצטרף: מאי 2005
נתן תודות: 126 פעמים
קיבל תודות: 482 פעמים

שליחה #3 

הנה דוגמה שעובדת:

קוד: בחירת הכל

import os
statvfs = os.statvfs('/')
print 'Free space: ', str(statvfs.f_frsize * statvfs.f_bfree / 1000000000) + ' GB'

Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #4 

@Batnun
·אני אני כותב את הפקודה הזאת זה מחזיר לי שגיאה...
'module' object has no attribute 'statvfs'.

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

האם יש דרך אחרת???

kingikra
סמל אישי של משתמש
חבר שלא מהעולם הזה
חבר שלא מהעולם הזה
תגובות: 8141
הצטרף: דצמבר 2006
נתן תודות: 355 פעמים
קיבל תודות: 249 פעמים

שליחה #5 

זה מה שמצאתי בחיפוש קצר

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3630
הצטרף: מאי 2005
נתן תודות: 126 פעמים
קיבל תודות: 482 פעמים

שליחה #6 

kingikra כתב:זה מה שמצאתי בחיפוש קצר
...
·

statvfs אכן כבר הוסר החל מגירסה 3, אבל כאן מדובר על os.statvfs, שעדיין נתמך.
בכל מקרה, נסה לעבוד עם os.fstatvfs.


Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #7 

זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.



האם יש דרך אחרת???

kingikra
סמל אישי של משתמש
חבר שלא מהעולם הזה
חבר שלא מהעולם הזה
תגובות: 8141
הצטרף: דצמבר 2006
נתן תודות: 355 פעמים
קיבל תודות: 249 פעמים

שליחה #8 

מצאתי בגוגל כמה וכמה דרכים. שווה לך לנסות אותם עד שאחד יצליח.

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3630
הצטרף: מאי 2005
נתן תודות: 126 פעמים
קיבל תודות: 482 פעמים

שליחה #9 

עדיטו כתב:זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.



האם יש דרך אחרת???
...
·


שים לב שבתגובה הקודמת כתבתי os.fstatvfs ולא os.statvfs:

http://www.tutorialspoint.com/python/pd ... tatvfs.pdf


Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #10 

היי
ניסיתי להשתמש בos.fstatvfs
אך אני מקבל בדיוק את אותה השגיאה...

האם יש דרך אחרת לגמרי...?

נ.ב
חיפשתי בגוגל לא מצאתי שום פיתרון אחר.

rabak
סמל אישי של משתמש
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 565
הצטרף: דצמבר 2010
נתן תודות: 100 פעמים
קיבל תודות: 90 פעמים

שליחה #11 

@עדיטו
·הדרך האחרת היא לפתוח בsubprocess את הפקודה df

קוד: בחירת הכל

import os
import sys
import subprocess

def freeSpaceInPath(path):
 try:
     f = os.statvfs(path)
     return f.f_bsize * f.f_bavail
 except Exception:
     print("error using statvfs() for free space detection")
 try:
     df_process = subprocess.Popen(["df", path], stdout=subprocess.PIPE)
     df_output = df_process.communicate()[0].decode('utf-8')
     df_output = re.sub("\s\s+", " ", df_output)
     megabytes_available_str = df_output.split("\n")[1].split(" ")[3]
     return int(megabytes_available_str)
 except Exception:
     print("calling df also failed")
     return None
זה כבר אמור לעבוד...

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #12 

נראה שיש שגיאה בקוד
df_output = re.sub("\s\s+", " ", df_output)
מאיפה הגיע הre??

תודה

avigdork
סמל אישי של משתמש
חבר ותיק
חבר ותיק
תגובות: 1460
הצטרף: יולי 2012
נתן תודות: 95 פעמים
קיבל תודות: 227 פעמים

שליחה #13 

תוסיף בהתחלה:
import re

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito
נתן תודות: 20 פעמים
קיבל תודות: 13 פעמים

שליחה #14 

תודה רבה!!!!
נראה שעובד!

שלח תגובה

חזור אל “תוכנה - KODI”