Mar-14-2018, 12:42 PM
Using Python 2.7. I want to navigate filesystem on a raspberry pi Linux box with pygame module. I am developing on a windows box in eclipse because it is quicker. Using a gamepad, and the XYAB buttons, I want to move around the filesystem and operate on the files. I am having trouble changing directory in order to do this. I understand there is a different paradigm in Linux as opposed to windows but I am finding this confusing.
import pygame, sys, os,subprocess
from subprocess import call
from pygame.locals import * # This module contains various constants used by Pygame
global p #position in file_list
global n #counter
global s #size of file_list
global folder_cwd
global file_list
n=0
s=4
p=0
os.chdir("d:\\test\sub_1")
folder_cwd=os.getcwd()
file_list=os.listdir(os.getcwd())
s=len(file_list)
A = 0
B = 1
X = 2
Y = 3
def finish():
''' Self explanatory '''
pygame.quit()
sys.exit(0)
def input(events):
''' Function to handle events, particularly quitting the program '''
global file_name
global p #position in the file_list
global n #counter
global file_list
global folder_cwd
file_list=os.listdir(os.getcwd())
s=len(file_list)
for event in events:
if event.type == JOYBUTTONDOWN: #using joystick buttons to navigate the filesystem
button=event.button
if(button==6):
finish() #quit()
#print button
folder_cwd=os.getcwd()
file_list=os.listdir(os.getcwd())
s=len(file_list)
if(button==Y): #cycling through the files in the current directoty
n+=1 #moving to next file
p=n%s
file_name=file_list[p]
if (os.path.isdir(file_name)):
print "This is a folder so we can change to it using the B button : ",file_name
print "This is a file : ",file_name
if(button==A): #cycling through the files in the current directoty
n+=-1
p=abs(n%s)
file_name=file_list[p]
if (os.path.isdir(file_name)):
print "This is a folder so we can change to it using the B button : ",file_name
print "This is a file : ",file_name
if(button==B):
try:
new_folder=os.path.abspath(file_name)
print "os.path.basename : ",os.path.basename(file_name)
print "os.path.abspath : ",os.path.abspath(file_name)
print "os.getcwd() BEFORE CHANGE IS : ",os.getcwd()
if os.path.isdir(new_folder):
print new_folder,"is a folder"
os.chdir(new_folder)
print "folder_getcwd IS : ",os.getcwd()
print "file_list is :",os.listdir(os.getcwd()) #DOESN'T PRINT THE FILE LIST
else:
print "Path doent exist"
except:
pass
pygame.init()
# Enable joystick support
pygame.joystick.init()
# Detect if joystick is available
joysticks = pygame.joystick.get_count()
for i in range(joysticks):
joystick = pygame.joystick.Joystick(i)
joystick.init()
# The game loop
while True:
input(pygame.event.get())
On pressing button B with a folder as the current 'file_name' there is no output from the line print "file_list is :",os.listdir(os.getcwd())I understand python 3 makes this kind of thing easier.
