דף 1 מתוך 1
צריך עזרה בכתיבת סקריפט פייטון.
נשלח: 28/08/2015 22:13
על ידי עדיטו
אז ככה..
אני רוצה לכתוב סקריפט שפשוט יבדוק כמה מקום פנוי יש בדיסק,
מדובר על מערכת אנדרואיד ומשום מה הפקודה os.statvfs('/')
מחזירה לי שגיאה: 'module' object has no attribute 'statvfs'.
לא משנה מה אני שם בPATH.
האם יש איזו שהי דרך?
תודה רבה
נשלח: 28/08/2015 23:18
על ידי Batnun
נשלח: 28/08/2015 23:33
על ידי Batnun
הנה דוגמה שעובדת:
קוד: בחירת הכל
import os
statvfs = os.statvfs('/')
print 'Free space: ', str(statvfs.f_frsize * statvfs.f_bfree / 1000000000) + ' GB'
Batnun
.
נשלח: 29/08/2015 4:19
על ידי עדיטו
@Batnun
·אני אני כותב את הפקודה הזאת זה מחזיר לי שגיאה...
'module' object has no attribute 'statvfs'.
כנראה שלא עובד עם אנדרואיד או משהו...
האם יש דרך אחרת???
נשלח: 29/08/2015 13:27
על ידי kingikra
זה מה שמצאתי בחיפוש קצר
נשלח: 29/08/2015 14:26
על ידי Batnun
kingikra כתב:זה מה שמצאתי בחיפוש קצר
...
·
statvfs אכן כבר הוסר החל מגירסה 3, אבל כאן מדובר על os.statvfs, שעדיין נתמך.
בכל מקרה, נסה לעבוד עם os.fstatvfs.
Batnun
.
נשלח: 29/08/2015 16:04
על ידי עדיטו
זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...
הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.
האם יש דרך אחרת???
נשלח: 29/08/2015 17:15
על ידי kingikra
מצאתי בגוגל כמה וכמה דרכים. שווה לך לנסות אותם עד שאחד יצליח.
נשלח: 29/08/2015 18:00
על ידי Batnun
עדיטו כתב:זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...
הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.
האם יש דרך אחרת???
...
·
שים לב שבתגובה הקודמת כתבתי
os.fstatvfs ולא
os.statvfs:
http://www.tutorialspoint.com/python/pd ... tatvfs.pdf
Batnun
.
נשלח: 08/09/2015 10:16
על ידי עדיטו
היי
ניסיתי להשתמש בos.fstatvfs
אך אני מקבל בדיוק את אותה השגיאה...
האם יש דרך אחרת לגמרי...?
נ.ב
חיפשתי בגוגל לא מצאתי שום פיתרון אחר.
נשלח: 08/09/2015 10:42
על ידי rabak
@עדיטו
·הדרך האחרת היא לפתוח ב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
זה כבר אמור לעבוד...
נשלח: 26/09/2015 19:22
על ידי עדיטו
נראה שיש שגיאה בקוד
df_output = re.sub("\s\s+", " ", df_output)
מאיפה הגיע הre??
תודה
נשלח: 26/09/2015 19:51
על ידי avigdork
תוסיף בהתחלה:
import re
נשלח: 27/09/2015 8:14
על ידי עדיטו
תודה רבה!!!!
נראה שעובד!