Python Copy Command (shutil?) - python

I have a rPi running raspbmc and I created autoexec.py which runs on startup. Inside autoexec.py, I put the following code:
import os
import shutil
shutil.copyfile(/mnt/usb/scripts/guisettings.xml, /home/pi/.xbmc/userdata/guisettings.xml)
However, I am getting an error every time I attempt to run this script. I have checked the log files and it only shows the following:
-->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.SyntaxError'>
Error Contents: ('invalid syntax', ('autoexec.py', 4, 17, 'shutil.copyfile(/mnt/usb/scripts/guisettings.xml, /home/pi$
SyntaxError: ('invalid syntax', ('autoexec.py', 4, 17, 'shutil.copyfile(/mnt/usb/scripts/guisettings.xml, /home/pi/.x$
-->End of Python script error report<--
What am I doing wrong here? I have been attempting this for the past hour.

You need to quote literal strings in Python:
shutil.copyfile('/mnt/usb/scripts/guisettings.xml',
'/home/pi/.xbmc/userdata/guisettings.xml')

Related

How to pass Windows path argument to python subprocess.run()?

I need to run the following command:
C:/Jts/tws.exe -J-DjtsConfigDir="C:/Jts"
It is running when a call from command line.
How can I run it from python?
I tried:
import subprocess
subprocess.run(["C:/Jts/tws.exe", "-J-DjtsConfigDir=\"C:/Jts\""]) # Java exception
subprocess.run(["""C:/Jts/tws.exe -J-DjtsConfigDir=\"C:/Jts\""""]) # FileNotFound exception
Nothing worked: I am getting either "FileNotFound" exception or java invalid path exception: "Illegal char <:> at index 2: \C:/Jts/"

Error in py_run_file_impl: System Exit: No such file or directory

I'm trying to run Task1.py via Shiny framework of R in Task1.r. Python code is successfully running. But it is giving me error in some line.
Task1.py:
...
...
params.override(...) //This line is running fine and giving desired output
params.process() //This line is giving error that file doesn't exists
...
...
Task1.r:
observeEvent(input$action_retrain_1,{
...
...
py_run_file("D:/..../Task1.py")
...
...
})
Previously asked question that I'm following to resolve error:
How to open CSV file in R when R says "no such file or directory"?
Effort to resolve error:
I used following two lines before py_run_file(), but it is still giving me same error. What should I do? What am I missing?
setwd('D:/PycharmProjects/.../sample')
myfile = read.csv('D:/PycharmProjects/.../sample/parameters.yaml')
Error:
Warning: Error in py_run_file_impl: SystemExit: [Errno 2] No such file or directory: 'D:/PycharmProjects/.../sample/parameters.yaml'
76: <Anonymous>
parameters.yaml file exists in folder named sample, but I don't know why it is giving me error. I'm running this in Pycharm, there it works well. But it is giving me problem in R. Anyone know how can I resolve this issue?

Python: TypeError while using os.environ.get

I want to access a shell environment variable in my python script.
I am trying this
import os
print os.environ.get["HOME"]
I get this error when I am executing in python
(I am getting the same error in bash also)
Traceback (most recent call last):
File "C:\Users\sraparim\Desktop\GitHub issues\issue #1187\test.py", line 54, in <module>
print os.environ.get["HOME"]
TypeError: 'instancemethod' object has no attribute '__getitem__'
[Finished in 0.2s with exit code 1]
[shell_cmd: python -u "C:\Users\sraparim\Desktop\GitHub issues\issue #1187\test.py"]
[dir: C:\Users\sraparim\Desktop\GitHub issues\issue #1187]
[path: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\WebEx\Productivity Tools;C:\Program Files (x86)\Cisco\OSD-ShellApplications;C:\Program Files (x86)\Sennheiser\SoftphoneSDK\;C:\Program Files\PuTTY\;C:\Python27\Scripts;C:\Python27;C:\Python27]
Please help...
get() is a method on the environ object; use parentheses instead of brackets:
print os.environ.get('HOME')
or brackets without get, which implicitly calls __getitem__():
print os.environ['HOME']

trouble with setting a SNMP attribute using pythone and netsnmp library

I am trying to use the netsnmp library to snmpset a attribute I get an error
robm#PC2303VM:~/code/python/snmp$ ./tester2.py
File "./tester2.py", line 5
ipaddr=netsnmp.Varbind('.1.3.6.1.2.1.69.1.3.1.0',172.168.100.2,'IPADDRESS')
^
SyntaxError: invalid syntax
now from the command line
snmpset -v2c -c private 10.1.1.8 .1.3.6.1.2.1.69.1.3.1.0 a 172.168.100.2
works just fine and quoting "172.168.100.2" gives a different error
TypeError: expected string or Unicode object, NoneType found
#!/usr/bin/python
import netsnmp
ipaddr=netsnmp.Varbind('.1.3.6.1.2.1.69.1.3.1.0',172.168.100.2,'IPADDRESS')
netsnmp.snmpset(ipaddr, Version=2, DestHost="10.1.1.8", Community="private")
filename=netsnmp.Varbind('.1.3.6.1.2.1.69.1.3.2.0', './robertme/Q2Q_REL_7_2_2_2015_04_07_T1935.bin','STRING')
netsnmp.snmpset(filename, Version=2, DestHost='10.1.1.8', Community='private' )
any Ideas on how to format that correctly?

Pig streaming through python script with import modules

Working with pigtmp$ pig --version
Apache Pig version 0.8.1-cdh3u1 (rexported)
compiled Jul 18 2011, 08:29:40
I have a python script (c-python), which imports another script, both very simple in my example:
DATA
example$ hadoop fs -cat /user/pavel/trivial.log
1 one
2 two
3 three
EXAMPLE WITHOUT INCLUDE - works fine
example$ pig -f trivial_stream.pig
(1,1,one)
()
(1,2,two)
()
(1,3,three)
()
where
1) trivial_stream.pig:
DEFINE test_stream `test_stream.py` SHIP ('test_stream.py');
A = LOAD 'trivial.log' USING PigStorage('\t') AS (mynum: int, mynumstr: chararray);
C = STREAM A THROUGH test_stream;
DUMP C;
2) test_stream.py
#! /usr/bin/env python
import sys
import string
for line in sys.stdin:
if len(line) == 0: continue
new_line = line
print "%d\t%s" % (1, new_line)
So essentially I just aggregate lines with one key, nothing special.
EXAMPLE WITH INCLUDE - bombs!
Now I'd like to append a string from a python import module which sits in the same directory as test_stream.py. I've tried to ship the import module in many different ways but get the same error (see below)
1) trivial_stream.pig:
DEFINE test_stream `test_stream.py` SHIP ('test_stream.py', 'test_import.py');
A = LOAD 'trivial.log' USING PigStorage('\t') AS (mynum: int, mynumstr: chararray);
C = STREAM A THROUGH test_stream;
DUMP C;
2) test_stream.py
#! /usr/bin/env python
import sys
import string
import test_import
for line in sys.stdin:
if len(line) == 0: continue
new_line = ("%s-%s") % (line.strip(), test_import.getTestLine())
print "%d\t%s" % (1, new_line)
3) test_import.py
def getTestLine():
return "test line";
Now
example$ pig -f trivial_stream.pig
Backend error message
org.apache.pig.backend.executionengine.ExecException: ERROR 2055: Received Error while processing the map plan: 'test_stream.py ' failed with exit status: 1
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapBase.runPipeline(PigMapBase.java:265)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapBase.cleanup(PigMapBase.java:103)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)
at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
at org.apache.hadoop.mapred.Child.main(Child.java:264)
Pig Stack Trace
ERROR 2997: Unable to recreate exception from backed error: org.apache.pig.backend.executionengine.ExecException: ERROR 2055: Received Error while processing the map plan: 'test_stream.py ' failed with exit status: 1
org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias C. Backend error : Unable to recreate exception from backed error: org.apache.pig.backend.executionengine.ExecException: ERROR 2055: Received Error while processing the map plan: 'test_stream.py ' failed with exit status: 1
at org.apache.pig.PigServer.openIterator(PigServer.java:753)
at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:615)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:168)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:144)
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90)
at org.apache.pig.Main.run(Main.java:396)
at org.apache.pig.Main.main(Main.java:107)
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 2997: Unable to recreate exception from backed error: org.apache.pig.backend.executionengine.ExecException: ERROR 2055: Received Error while processing the map plan: 'test_stream.py ' failed with exit status: 1
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getErrorMessages(Launcher.java:221)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getStats(Launcher.java:151)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:337)
at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.execute(HExecutionEngine.java:382)
at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1209)
at org.apache.pig.PigServer.storeEx(PigServer.java:885)
at org.apache.pig.PigServer.store(PigServer.java:827)
at org.apache.pig.PigServer.openIterator(PigServer.java:739)
... 7 more
Thanks you much for your help!
-Pavel
Correct answer from comment above:
The dependencies aren't shipped, if you want your python app to work with pig you need to tar it (don't forget init.py's!), then include the .tar file in pig's SHIP statement. The first thing you do is untar the app. There might be issues with paths, so I'd suggest the following even before tar extraction: sys.path.insert(0, os.getcwd()).
You need to append the current directory to sys.path in your test_stream.py:
#! /usr/bin/env python
import sys
sys.path.append(".")
Thus the SHIP command you had there does ship the python script, but you just need to tell Python where to look.

Categories