Sziasztok.
Életem első python-dolgait tanulom éppen és rájöttem, hogy ez bizony nem BASH.
Paraméternek mar át tudok adni stringet, és azt mar utána lehet kezelni. Most azt szeretnem, hogy fájlból olvasson és minden sort külön stringként kezeljen, külön névvel.
Eddig jutottam el:
root@logger:/usr/src/examples# cat olvasas.py
#!/bin/python
import sys,os
file='/logger'
job_id=os.path.join(file)
f=open(job_id,'r').readlines()
print f
root@logger:/usr/src/examples# cat /logger
2015febr7
root@logger:/usr/src/examples# python olvasas.py
['2015febr7\n']
root@logger:/usr/src/examples#
A problémám az, hogy amikor f-et kiírja, akkor azt így teszi:
['2015febr7\n']
és nem így:
2015febr7
Ez miért van?
Biztos valami őrületesen egyszerű dologról van szó...
Hozzászólások
Pontositva igy tudom megfogalmazni BASHban:
f="`cat /logger | awk 'BEGIN {FS=" "}{print $1}'`"
echo $f
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Igen, mukodik.
Koszonom szepen.
# furcsaltam, hogy a pithon meg a # jel utan sem szereti az ekezeteket. Erdekes.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Semmi érdekes nincs benne, nincs vele semmi baja.
Csak jelezni kell a file kódolását a scriptben. Érdemes utánanézni.
Bzmg... A XXI. században gondot okoz (külön extra mókolás kell), ha nem 7 bites ASCII a komment/forráskód... Gratulálok.
Hát ha már itt tartunk, elég szomorú hogy nem tért át a XXI. század 2. évtizedére se minden OS és minden szoftver UTF8-ra. Pedig 20 éve létezik.
... vagy bármi másra, amit bárki más talált ki bármi más megfontolásból...
A python3 sok téren lépett előre. Pl. ebben is:
https://docs.python.org/2/tutorial/interpreter.html#source-code-encoding
https://docs.python.org/3/tutorial/interpreter.html#source-code-encoding
--
♙♘♗♖♕♔
Hát, ha abból indulunk ki, hogy a Python olyan nyelv szeretne lenni, ami rendre nevel (hogy ez sikerült-e, azt ne firtassuk), akkor valahol logikus az, hogy megköveteli azt, hogy még a kommentnek is az legyen a kódolása, mint minden másnak. Fura, de valamennyire el tudom fogadni.
Aki rendetlen, az ne kódoljon. Mert a forráskód kinézete a fejlesztés nem túl lényeges szelete: nagyobb projekteknél a kötelező formázási konvenciókat betartató formázó tool-on megy keresztül a forráskód, mielőtt a verziókezelőbe vissza lenne pakolva.
A változók, eljárások nevezéktana esetében például sokkal fontosabb, hogy rend legyen, hogy "szép", egységes legyen, erre ugyanis nem nagyon van automatizmus még :-P
> aki rendetlen, ne kódoljon
Egyetértek, bővebbet inkább nem írok ;-)
Viszont az egyszerűség, a kezdőbarátság is hol deklarált célként, hol pro tulajdonságként jelenik meg.
Mármost a fenti tükrében azt, hogy csórikám beírja a bármit azután a kommentjel után, ami a "Hogyan legyünk Python programozók 12 másodperc alatt?"-féle könyvek szerint éppen arra szolgál, hogy utána bármi beírható legyen, mire az egésznek a taknya-nyála egybefolyik... hát nem tom, én nehezen tudnám védeni egy csapatnyi középiskolás előtt.
2008 óta van python3. Esetleg ideje lenne már nem a régivel szopatni a kezdőket.
--
♙♘♗♖♕♔
+1
Valamiért a nagy disztribútorok elég konzervatívkák maradtak az elmúlt közel 7 évben ezen a téren.
valamiért ==> a 3.x inkompatibilis "másik python", helytelenül viszi a 2.x alá írt kódokat. Bár oda lehet már figyelni, mert a 2.6 illetve a 2.7 széria a váltást könnyítendő 99%-ban eszi a 3.x szintaktikát, így lehet már 99%-ban jó kódokat írni, tesztelve mindkettőn. Viszont nem figyelve 2.x szintaktikájú kóddal rendelkezhetünk, ami hibás eredményt adhat 3.x környezettel futtatva.
Nézzünk egy apró, ám fontos esetet: print 2.x-ben nyelvi elem, 3.x-ben függvény.
>>> print 5+2
2.x esetén oké, 3.x esetén hibába futunk a zárójelezés hiányában.
>>> print ("Osszeg:", 5+2)
python 3.4: "Osszeg: 7" --> string
python 2.7: ('Osszeg:', 7) --> tuple
from __future__ import print_function
2.6 óta működik.
--
♙♘♗♖♕♔
--> from __future__ import print_function
Ez tetszik! Gyorsan meg is kerestem.
https://docs.python.org/2/library/__future__.html
- division
- absolute_import
- print_function
- unicode_literals
A fenti 4 importálásával ténylegesen lehet python-2.6 .. 3.4 verziókon 100%-ban egységesen lefutó kódot írni?
Általában ennél kicsit több kell. Itt összefoglalva olvasható, hogy mire kell még figyelni. A PyChess esetén ezek kellettek belőle.
--
♙♘♗♖♕♔
https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collecti…
--
♙♘♗♖♕♔
Mindent, de tényleg MINDENT meg lehet oldani, körüljárni, eltakarni (valószínűleg sokunk fizetésében jelent nagy részt az erre való hajlandóság és képesség).
Kérdés, hogy az egész hogyan viszonyul a fenti felvetéshez, amely során csóringerkém életében először szembesül azzal, hogy ez a python nem is az a python, ez a komment nem is úgy komment.
(Disclaimer: amúgy szó nincs róla, hogy ne kedvelném a nyelvet, de itt a "seemed like a good idea at the time" szagát érzem.)
Gondolom a python3 pont amiatt született, mert sok helyen már GvR se bírta tovább ezt a szagot :)
--
♙♘♗♖♕♔
pl. egy ilyennel mondjuk a 3. sorban?
# -*- coding: utf-8 -*-
akkor ez hasonlit a latexhez, ott is kozolni kell a preambulumban hogy mit kell olvasnia.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Más nyelvek meg tudták oldani, hogy nem kell a szájába rágni, hogy vigyázzon, mert (oh, borzalom!) ékezetes, utf-1543125 vagy a jó ég tudja, milyen kódolású részek is vannak. Pláne kommentnél... Amit minden rendes előfeldolgozó nulladik körben kéne, hogy kihajítson, mindenféle beleolvasás és vakerálás nélkül.
Az abszurd humor gyökerei köteleznek.
A readlines EOF-ig az összes sort beolvassa egy listába, lásd: https://docs.python.org/2/library/stdtypes.html#file.readlines
Te a listát írod ki, aminek egy eleme van. Azt így írja ki a Python.
szerk.: felettem szebben megfogalmazták a megvalósítást.
--
blogom
Az idézett dokumentációban kicsit feljebb meg még szebben. A lista se kell.
--
♙♘♗♖♕♔
Azt hiszem kezdem erteni. Koszi.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
És milyen szép lenne, ha a scripted ciklust, elágazást, meg ilyesmiket is tartalmazna, és ugyanilyen módon (sor eleji whitespace kiszórva) lenne megjelenítve... :-P
Bizony.
Azonban a forraskod beillesztesekor a hup kirantja a sor eleji uresseget. Meg nem jottem ra miert. Pedig regen sikerult.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Bizony, nagyon nehéz megjegyezni a [code]-ot...
nalam az nem ment.
nemtom miert.
varjunk csak..
ha ezek jol irodtak, akkor huje vagyok.
ha egy oszlopba, akkor ketsegeim vannak.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
igen, huje vagyok..
apróság: http://wikiszotar.hu/wiki/magyar_ertelmezo_szotar/H%C3%BClye
ezzel okosabb lettem.
Azert irhatom pontos j-vel ugye?
Ha mar a korisme kozismert..
Használhatsz pastebin-t is.
Mert a html-ben nem számít, a pájtonban meg nagyon is - mert a programnyelv maga kényszerítse ki a "szépen formázott" forrást, mondta valaki valamikor... És úgy lett... :-P
Azért a nyitott fájlt illik becsukni, ahogy illik nem feltételezni, hogy a teljes fájl egy nyeletre befér a memóriába: