» »

problem z linuxom (rabim cimprej prosim)

problem z linuxom (rabim cimprej prosim)

Isotropic ::

-zakaj mi vrze ven napako bad interpreter, no such file or directory in /usr/bin/python^M?
to vrstico sem na novo copypastal z drugega linux skripta (v linuxu - nedit), tako da ne vem, kaj mu ni vsec. ce dam less test.py zgleda vse normalno.
/bin/bash: ./test.py: /usr/bin/python
: bad interpreter: No such file or directory


-rad bi pognal ./test.py
tako da lavfa v ozadju in da shranjuje ves output v ozadje v datoteko.

to se naredi z ( ./test.py >& output.txt ) &
ce se ne motim?

BaRtMaN ::

Newline [wikipedia.org].

Verjetno si datoteko shranil v kakšnem združljivostnem načinu? Probaj shranit samo z NL, ne pa NL+CR. Na wiki strani imaš tudi ukaze, kako se to stori.

z znakom > preusmeriš le stdout, ki se zapiše tudi kot &1. Marikateri program izpisuje napake tudi v stderr, ki je &2, tako da je velikokrat potrebno preusmeriti stderr v stdout. Za več si preberi What does "> /dev/null 2>&1" mean?

Zgodovina sprememb…

  • spremenil: BaRtMaN ()

Isotropic ::

ne, vse gre v stdout kolikor mi je znano. oz. vse se izpise na ekran. (ker je to itak moja skripta, error handlinga ni)
v bistvu vse dela v ozadju, samo noce pa zapisovati v datoteko.

Zgodovina sprememb…

BaRtMaN ::

No, v tvojem ukazu zgoraj mi ni jasno, kaj hočeš dosečt z >&. Probaj samo
(./test.py > output.txt)&

Isotropic ::

ne dela output v file. skripta dela normalno. (pa bi mogla outputat, sem dal prav na zacetek print ('...')


tudi samo ./test.py > bla ne dela

Zgodovina sprememb…

Kami ::

V primeru, ki ga omenjaš bi zadeva morala delovati.

Edino kaj ti še ostane je to, da sem prilepiš celo skripto, da vidimo, če se problem slučajno skriva kje drugje (kar je sicer malo verjetno, ker si napisal, da si dal print čisto na začetek).

Poldi112 ::

Instaliraj si python-a, oz. popravi prvo vrstico skripte, da dejansko kaže na pravo mesto.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Isotropic ::

saj je instaliran, sem sel gledat na /usr/bin/python
me pa zanima se, kaj je to stderr in kaksne vrste output gre not? mi je bilo receno, da je to vzrok napake...
sam program ne javi nobene napake

Zgodovina sprememb…

redo ::

A lahko izvemo prvo vrstico iz tvoje skripte? Tisto s '#!'? Verjetno je pa res, kar ti je napisal BaRtMaN. Se pravi, da imaš v tej vrstici na koncu neke 'skrite' znake.

Kar se tiče >& iz
man bash
Redirecting Standard Output and Standard Error
This construct allows both the standard output (file descriptor 1) and
the standard error output (file descriptor 2) to be redirected to the
file whose name is the expansion of word.

There are two formats for redirecting standard output and standard
error:

&>word
and
>&word

Of the two forms, the first is preferred. This is semantically equiva‐
lent to

>word 2>&1

Kar se tiče ()&, oklepajev pravzaprav ne rabiš. Relevanten del v manualu je tisti pod naslovom Lists in naslednji Compound Commands.

Lahko pa stvar poženeš kot
python text.py &>output.txt &

redo ::

Ah ja, tole z &> mislim da je v 'novejših' verzijah (forgive my ignorance), lahko pa uporabiš ekvivalent >word 2>&1. Se pravi
python text.py >output.txt 2>&1 &

Isotropic ::

#!/usr/bin/python

from array import *


file = open('Job-1.inp', 'r')

temp = []
temp2 = []
db = {}
db['Grains'] = []
node = 0
element = 0

for line in file:

  if '*Part' in line:
    temp = line.strip('\r\n ')
    temp = temp.split('=')
    db['Grains'].append(temp[-1])
    db[temp[-1]] = {}
    db[temp[-1]]['nodes'] = []
    db[temp[-1]]['elements'] = []
    #db[temp[-1]]['elements']['type'] = []
    #db[temp[-1]]['elements']['connectivity'] = []
  elif '*Instance' in line:
    #print line
    temp = line.strip('\r\n')
    #print temp
    temp = temp.split(', ')
    temp = temp[-1].split('=')
    grain = temp[-1]
  elif '*End Instance' in line:
    node = 0
    element = 0
    pass
  elif '*Node' in line:
    node = 1
    element = 0
  elif '*Element' in line:
    node = 0
    element = 1
  elif node == 1 and grain != 0 :
    #print line
    temp = line.strip(' ')
    temp = temp.strip('\r\n')
    temp = temp.split(',')
    db[grain]['nodes'].append([int(temp[0]), float(temp[1]), float(temp[2]), float(temp[3])])
    
  elif element == 1 and grain != 0:
    temp = line.strip(' ')
    temp = line.split(',')
    db[grain]['elements'].append([int(temp[0]), int(temp[1]), int(temp[2]), int(temp[3]), int(temp[4])])
    
    #print temp
    
file.close()    
print ('finished populating data\n')

#do not change until here!
#
#
#
eps = 1e-4

for grain in db['Grains']:
  for element in db[grain]['elements']:
    print ('checking element ', element[0], ' in grain ', grain)
    #node_1 = db[grain]['nodes'][element[1]-1][1:4]  -- first node is the top of the pyramid
    node_2 = db[grain]['nodes'][element[2]-1][1:4]
    node_3 = db[grain]['nodes'][element[3]-1][1:4]
    node_4 = db[grain]['nodes'][element[4]-1][1:4]

    for newGrain in db['Grains']:
      if newGrain != grain:
        for el in db[newGrain]['elements']:
          
          #testNode_1 = db[newGrain]['nodes'][el[1]-1][1:4]
          testNode_2 = db[newGrain]['nodes'][el[2]-1][1:4]
          testNode_3 = db[newGrain]['nodes'][el[3]-1][1:4]
          testNode_4 = db[newGrain]['nodes'][el[4]-1][1:4]
          li = [testNode_2, testNode_3, testNode_4]

          if node_2 == testNode_2 and node_3 == testNode_3 and node_4 == testNode_4:
            print ('Success for element ', element[0], ' of grain ', grain, '. Connecting element: ', el[0], ' and grain: ', newGrain)
           
          


evo kodo
shranjena je bila pod unix, edina razlika je pa bila, da ne javi vec napake /usr/bin/python^M, ki je bila posledica dos kodiranja.

btw, ce ima kdo kaksen nasvet, kako jo lahko pohitrim, please by all means, ker zdaj je grozno pocasna. prepisati kam drugam je zal ne morem.
en element (druga vrstica v loopu) se izvede na vsakih ~5s, jih je pa dobesedno ogromno (100,000 recimo)

aja, ce jo zazenem brez backgrounda, dela pravilno.

Zgodovina sprememb…

Isotropic ::

    print ('checking element ', element[0], ' in grain ', grain)

glede na output naj bi bila napaka tukaj???
[cesar@mangrt100 ConformalMesh]$ ./test.py
finished populating data

('checking element ', 1, ' in grain ', 'Grain_1')
('checking element ', 2, ' in grain ', 'Grain_1')
('checking element ', 3, ' in grain ', 'Grain_1')
('checking element ', 4, ' in grain ', 'Grain_1')
('checking element ', 5, ' in grain ', 'Grain_1')
('checking element ', 6, ' in grain ', 'Grain_1')
('checking element ', 7, ' in grain ', 'Grain_1')
('checking element ', 8, ' in grain ', 'Grain_1')
('checking element ', 9, ' in grain ', 'Grain_1')
('checking element ', 10, ' in grain ', 'Grain_1')


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

(Java) Iskanje manjkajoči podatkov v tabeli

Oddelek: Programiranje
15859 (624) noraguta
»

C# IEnumerable problem

Oddelek: Programiranje
121370 (1139) Genetic
»

Python iskanje podvojenih vrednosti

Oddelek: Programiranje
181265 (978) BlueRunner
»

python problem

Oddelek: Programiranje
131252 (992) Isotropic
»

Python - problem

Oddelek: Programiranje
132612 (2342) slevin

Več podobnih tem